Cách cài đặt cơ sở dữ liệu mysql , php myadmin trên vps ubuntu server và cho phép kết nối mysql từ xa

1. Cài đặt mysql

2. Đổi mật khẩu cho root

Xem status của mysql
systemctl status mysql.service
# nếu mysql chưa chạy thì dùng câu lệnh sau để kích hoạt “sudo systemctl start mysql”

3.Cài php myadmin

Trong quá trình cài đặt, hãy chọn apache2
Tiếp theo nó hỏi có muốn cấu hình database không, thì bấm vào có. Điền pass phpmyadmin vào
(Điền luôn pass giống của root trong mysql cho nhanh)

Cài xong vào thử trang web sau để xem php cài thành công hay chưa : ip_vps/phpmyadmin/
Nếu nó hiện ra trang đăng nhập phpmyadmin nghĩa là bạn đã cài đặt thành công

4. Cho phép truy cập mysql từ xa

Sửa file config mysql tại đường dẫn sau (dùng vim để sửa nhé):
/etc/mysql/mysql.conf.d/mysqld.cnf
Sửa blind-address 127.0.0.1 thành 0.0.0.0

Lưu lại file và restart lại mysql
sudo systemctl restart mysql

Mở port 3306 từ ubuntu firewall
sudo ufw allow 3306/tcp

Mở 1 máy ubuntu khác, dùng câu lệnh sau để check xem đã mở port thành công hay chưa
nmap ip_vps
Nếu kết quả hiện ra state của cổ 3306 open là bạn đã mở cổng thành công

5. Tạo user db cho phép truy cập từ xa

Sau khi mở port, bạn cần tạo một user và trao nó quyền truy cập từ xa
Vào vps, gõ sql và gõ câu lệnh sau (user và pass do bạn) ( mysql -u root -p)

Cho phép user này có thể truy cập 1 database nào đó hoặc truy cập tất cả

Ví dụ khi muốn tạo mới user thuylv6 và cho phép nó truy cập db auto-dictionary

CREATE USER ‘thuylv5’@’%’ IDENTIFIED BY ‘20101997’;
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON auto-dictionary.* TO ‘thuylv5’@’%’;

 

Ok đến đây bạn đã set up thành công 1 mysql trên 1 vps và tạo được 1 account cho phép truy cập database từ xa

bonus:

Để dùng python kết nối với mysql, hãy dùng peewee và pymysql


Bonus: Trong quá trình các bạn dùng django, các bạn muốn kết nốt với mysql. Khổ nỗi phiên bản 8 của mysql user của mysql mặc định dùng plugin caching_sha2_password. Trong khi django lại dùng mysql_native_password.
Vì vậy chúng ta cần tạo user kết nối mysql từ xa và dùng mysql_native_password:

Leave a Comment