Trong quá trình sử dụng WordPress mình có sử dụng hệ quản trị cơ sở dữ liệu MySQL để lưu trữ dữ liệu. Việc kết nối nội bộ WordPress với MySQL thì bình thường, hoặc mình có code một số đoạn script php đặt trên server kết nối trực tiếp tới MySQL cũng bình thường.
Nhưng nay có nhu cầu phát sinh mình cần sửa đổi mang tính hàng ngày từ một ứng dụng code bằng python trên máy tính của mình thì không thể kết nối được. Mặc định khi cài MySQL, để đảm bảo bảo mật thì MySQL sẽ không cho kết nối ra bên ngoài. Nó sẽ bị giới hạn ở 2 tầng:
1: Tầng server, mình sử dụng hệ điều hành Ubuntu VPS của VULTR, nó mặc định không mở cổng nào ra bên ngoài.
2: Tầng DB MySQL thì chỉ cho phép IP nội bộ mặc định có thể truy cập Database.
Để xử lý tình huống này mình đã làm các bước sau và đã thành công.
Bước 1: Ta cần sửa file config của MySQL trên server Ubuntu. Ta sử dụng lệnh:
<code>sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf</code>
Tìm dòng bind-address thay: 127.0.0.1 bằng địa chỉ: 0.0.0.0
Sau đó khởi động lại MySQL Server bằng lệnh:
service mysql restart
Bước 2: Cho phép quyền truy cập từ bên ngoài vào MySQL
Bạn truy cập với quyền root vào MySQL Server:
sudo mysql -u root -p
Sau đó dùng lệnh sau để cho phép truy cập:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Bước 3: Mở port của server VPS cho phép bên ngoài có thể truy cập được vào:
iptables -I INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
Ở phần này mình đang sử dụng cổng mặc định khi cài MySQL là 3306, nếu các bạn để ở cổng khác thì thay số 3306 bằng cổng của mình.
Sau đó mình sử dụng kết nối bằng code Python tới MySQL tại server thì đã thành công.