Hướng dẫn kích hoạt Remote MySQL để truy cập cơ sở dữ liệu từ xa trên VPS

Những nội dung chính trong bài

 

  • Khi nào nên bật Remote MySQL: Xác định các trường hợp cần truy cập database từ xa.

 

  • Điều kiện cần chuẩn bị: Các yêu cầu tối thiểu về VPS, quyền truy cập và SSH.

 

  • Hướng dẫn cấu hình chi tiết: Từ chỉnh sửa file MySQL, cấp quyền user đến mở firewall.

 

  • Lưu ý bảo mật quan trọng: Giúp hạn chế rủi ro khi cho phép truy cập database từ bên ngoài.

 

Khi nào nên sử dụng Remote MySQL?

 

Bạn nên cân nhắc kích hoạt Remote MySQL trong các tình huống sau:

 

  • Quản lý cơ sở dữ liệu từ xa
    Khi bạn muốn sử dụng phần mềm quản lý database có giao diện đồ họa trên máy cá nhân để thao tác nhanh và trực quan hơn.

 

  • Kiến trúc client – server tách biệt
    Ứng dụng hoặc website chạy trên một VPS riêng, còn database đặt trên VPS khác để tối ưu hiệu năng và bảo mật.

 

  • Chia sẻ quyền cho team phát triển
    Khi cần cấp quyền truy cập database cho lập trình viên mà không muốn họ đăng nhập trực tiếp vào VPS qua SSH.

 

Điều kiện để remote database MySQL

 

Trước khi bắt đầu cấu hình, hãy đảm bảo bạn đáp ứng đầy đủ các yêu cầu sau:

 

  • VPS đã cài MySQL hoặc MariaDB và dịch vụ đang hoạt động bình thường.

 

  • Quyền root hoặc sudo để chỉnh sửa file cấu hình và quản lý service.

 

  • Thông tin đăng nhập SSH gồm IP VPS, username và mật khẩu (hoặc SSH key).

 

  • Sao lưu cấu hình MySQL để có thể khôi phục nếu xảy ra lỗi ngoài ý muốn.

 

Các bước kích hoạt Remote MySQL

 

Bước 1: Đăng nhập VPS qua SSH

 

Từ máy tính cá nhân, mở Terminal (macOS/Linux) hoặc PowerShell/CMD (Windows) và kết nối tới VPS:


 
MySQL, Remote MySQL, MySQL Workbench
 
ssh root@IP_VPS
 

Thay IP_VPS bằng địa chỉ IP của máy chủ và nhập mật khẩu khi được yêu cầu.

 

Bước 2: Chỉnh sửa file cấu hình MySQL

 

Mặc định, MySQL chỉ cho phép kết nối từ localhost. Bạn cần chỉnh sửa cấu hình để MySQL lắng nghe kết nối từ bên ngoài.

 

Xác định file cấu hình MySQL

 

Tùy hệ điều hành, đường dẫn file cấu hình có thể khác nhau:

 

  • Ubuntu / Debian

    
    		
     
    /etc/mysql/mysql.conf.d/mysqld.cnf
     
  • CentOS / AlmaLinux / RHEL

    
    		
     
    /etc/my.cnf
     

Mở file bằng trình soạn thảo, ví dụ:


 
vi /etc/my.cnf
 

Thay đổi bind-address

 

Tìm dòng:

 

bind-address = 127.0.0.1
 

Sửa thành:


 
bind-address = 0.0.0.0
 

Giá trị 0.0.0.0 cho phép MySQL chấp nhận kết nối từ mọi địa chỉ IP.

 

Khởi động lại MySQL / MariaDB

 

Sau khi lưu file, restart dịch vụ để áp dụng thay đổi:


 
systemctl restart mysql
 

Hoặc nếu dùng MariaDB:


 
systemctl restart mariadb
 

Kiểm tra MySQL đã mở kết nối từ xa chưa

 

Dùng lệnh:


 
ss -lntp | grep mysql
 

Nếu thấy MySQL đang LISTEN trên 0.0.0.0:3306, tức là cấu hình đã thành công.

 

Bước 3: Cấp quyền truy cập từ xa cho user MySQL

 

Đăng nhập MySQL


 
mysql -u root -p
 

Kiểm tra danh sách user hiện có:


 
SELECT User, Host FROM mysql.user;
 

Tạo user MySQL cho remote

 

Để đảm bảo an toàn, không nên dùng user root cho kết nối từ xa:


 
CREATE USER 'ten_user'@'%' IDENTIFIED BY 'mat_khau';
 

Giải thích:

 

  • ten_user: tên người dùng MySQL

 

  • %: cho phép kết nối từ mọi IP
    Nên thay % bằng IP cụ thể để tăng bảo mật (ví dụ: 103.200.x.x)

 

  • mat_khau: mật khẩu mạnh

 

Cấp quyền cho user


 
GRANT ALL PRIVILEGES ON *.* TO 'ten_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;

Kiểm tra lại quyền:


 
SHOW GRANTS FOR 'ten_user'@'%';
 

exit để thoát MySQL.

 

Bước 4: Mở port 3306 trên Firewall

 

MySQL sử dụng cổng mặc định 3306, bạn cần mở port này trên firewall.

 

Với UFW (Ubuntu/Debian):


 
ufw allow 3306/tcp ufw reload
 

Với Firewalld (CentOS/AlmaLinux):


 
firewall-cmd --add-port=3306/tcp --permanent firewall-cmd --reload

 

Bước 5: Kiểm tra kết nối từ máy tính cá nhân

 

Cách 1: Dùng Terminal


 
mysql -h IP_VPS -u ten_user -p
 

Cách 2: Dùng phần mềm quản lý database

 

Ví dụ cấu hình kết nối trong Navicat / DBeaver:

 

Thông tin Giá trị
Host / IP IP VPS
Port 3306
Username ten_user
Password mat_khau

 

Nhấn Test Connection → nếu hiện Connection Successful là đã kết nối thành công.

 

Lưu ý quan trọng về bảo mật Remote MySQL

 

  • Không remote bằng user root

 

  • Giới hạn IP truy cập, tránh dùng % nếu không cần thiết

 

  • Sử dụng mật khẩu mạnh

 

  • Thu hồi quyền hoặc xóa user khi không còn sử dụng

 

  • Cân nhắc bật SSL/TLS cho MySQL để mã hóa dữ liệu truyền tải

 HỖ TRỢ TRỰC TUYẾN