Việc thiết lập MySQL để có thể truy cập từ xa đòi hỏi bạn phải thực hiện qua 3 giai đoạn chính: Cấu hình hệ thống, Phân quyền người dùng và Thiết lập tường lửa.
Bước 1: Thay đổi địa chỉ ràng buộc (Bind Address)
Mặc định, MySQL chỉ lắng nghe các kết nối từ chính nó (localhost). Bạn cần thay đổi điều này trong file cấu hình.
1.Mở file cấu hình MySQL (thường nằm ở một trong các đường dẫn sau tùy bản phân phối):
sudo nano /etc/my.cnf #(CentOS/RHEL)
2. Tìm dòng có nội dung:
3. Sửa thành:
4. Lưu file và khởi động lại dịch vụ MySQL:
Bước 2: Phân quyền cho người dùng truy cập từ xa
Ngay cả khi MySQL đã mở cổng, bạn vẫn cần cấp quyền cho một tài khoản cụ thể được phép đăng nhập từ một IP bên ngoài.
1. Đăng nhập vào MySQL với quyền root:
sudo mysql -u root -p
2.Chạy lệnh sau để cấp quyền (Thay user_name, password và remote_ip bằng thông tin của bạn):
GRANT ALL PRIVILEGES ON database_name.* TO 'user_name'@'remote_ip';
FLUSH PRIVILEGES;
Lưu ý: Nếu bạn muốn cho phép truy cập từ mọi nơi (không khuyến khích vì bảo mật), hãy thay remote_ip bằng dấu %.
Bước 3: Mở cổng tường lửa (Firewall)
MySQL sử dụng cổng mặc định là 3306. Bạn phải mở cổng này để các gói tin từ bên ngoài có thể đi vào.
-
Đối với UFW (Ubuntu/Debian):
-
Đối với Firewalld (CentOS/RHEL):
Bước 4: Kiểm tra kết nối
Từ máy tính cá nhân, bạn có thể kiểm tra nhanh bằng lệnh:
Để đảm bảo an toàn cho dữ liệu, bạn chỉ nên cấp quyền cho các IP tĩnh cụ thể thay vì dùng dấu %. Ngoài ra, hãy đảm bảo mật khẩu người dùng đủ mạnh để tránh các cuộc tấn công brute-force.
Chúc các bạn thành công.