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

sudo apt-get update
sudo apt-get install mysql-server

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

sudo mysql
mysql > SELECT user,authentication_string,plugin,host FROM mysql.user;
mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql > FLUSH PRIVILEGES;
mysql > SELECT user,authentication_string,plugin,host FROM mysql.user;

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

apt update && upgrade
sudo add-apt-repository universe
apt install phpmyadmin

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é):

vi /etc/mysql/mysql.conf.d/mysqld.cnf
Sửa bind-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)

```
CREATE USER 'username'@'%' IDENTIFIED BY 'new-password';
FLUSH PRIVILEGES;
```


OR

```
CREATE USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'new-password';
FLUSH PRIVILEGES;
```

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

GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';

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

pip install pymysql

pip install peewee

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:

mysql -u root -p
SELECT user,authentication_string,plugin,host FROM mysql.user;

CREATE USER 'nghiahsgs4'@'%' IDENTIFIED WITH mysql_native_password BY '261997';

FLUSH PRIVILEGES;

GRANT ALL PRIVILEGES ON *.* TO 'nghiahsgs4'@'%';

Leave a Comment