Cấu hình Mysql trên Ubuntu để có thể kết nối Navicat từ các máy trong mạng LAN

1. Cài đặt MySQL trên Ubuntu

Nếu bạn chưa cài MySQL:

sudo apt update
sudo apt install mysql-server -y 

Sau khi cài xong, kiểm tra dịch vụ:

sudo systemctl status mysql 

Nếu chưa chạy, khởi động:

sudo systemctl start mysql
sudo systemctl enable mysql 

 

2. Cấu hình MySQL lắng nghe trên tất cả địa chỉ IP

Mặc định MySQL chỉ lắng nghe 127.0.0.1 (chỉ localhost).
Bạn cần chỉnh lại để cho phép kết nối từ máy khác.

Mở file cấu hình:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 

Tìm dòng:

bind-address = 127.0.0.1 

thay bằng:

bind-address = 0.0.0.0 

Lưu lại (Ctrl + O, Enter, Ctrl + X).

Rồi khởi động lại dịch vụ:

sudo systemctl restart mysql

3. Cấp quyền truy cập từ xa cho user

Mặc định user root chỉ truy cập nội bộ.
Bạn có thể tạo một user riêng hoặc mở quyền cho user sẵn có.

Cách 1: Tạo user mới (nên dùng)

Vào MySQL shell:

sudo mysql 

Tạo user:

CREATE USER 'username'@'%' IDENTIFIED BY 'your_password'; 

Cấp quyền (vd: toàn quyền trên tất cả DB):

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

Cách 2: Cho phép root truy cập từ xa (không khuyến khích)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
CREATE USER 'root'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4. Mở cổng tường lửa (nếu có)

MySQL dùng cổng 3306, bạn cần mở nó.

Kiểm tra UFW (tường lửa):

sudo ufw status 

Nếu bật, thêm rule:

sudo ufw allow 3306/tcp
sudo ufw reload 

5. Kiểm tra kết nối

Từ máy khác trong cùng LAN:

  • Mở Navicat, chọn New Connection → MySQL

  • Nhập:

    • Host: địa chỉ IP của máy Ubuntu (ví dụ 192.168.1.100)

    • Port: 3306

    • UserPassword bạn đã tạo ở bước 3

Nhấn Test Connection, nếu thành công thì OK ✅

Gợi ý bảo mật

  • Dùng user riêng, không dùng root.

  • Nếu chỉ cho phép vài máy truy cập, thay % bằng địa chỉ IP cụ thể:

    CREATE USER 'username'@'192.168.1.50' IDENTIFIED BY 'password';

----------------------------------------

Nếu gặp lỗi "1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client" thì khắc phục như sau

Nguyên nhân lỗi:
Phiên bản MySQL Server (trên Ubuntu) của bạn dùng cơ chế xác thực caching_sha2_password, nhưng Navicat hoặc MySQL Client trên Windows (thường cũ hơn, ví dụ 5.x) chỉ hỗ trợ mysql_native_password.

✅ Cách khắc phục

🔹 1. Đăng nhập vào MySQL trên Ubuntu

sudo mysql 

🔹 2. Kiểm tra user đang dùng

SELECT user, host, plugin FROM mysql.user; 

Bạn sẽ thấy user của bạn (ví dụ root hoặc username) có plugin là caching_sha2_password.

🔹 3. Đổi cơ chế xác thực về mysql_native_password

Giả sử user của bạn là username:

ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; 

Nếu bạn dùng root:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; 

🔹 4. Khởi động lại MySQL

sudo systemctl restart mysql 

🔹 5. Kết nối lại từ Navicat

Nhập đúng:

  • Host: IP của máy Ubuntu

  • Port: 3306

  • User: username bạn đã chỉnh ở trên

  • Password: your_password

→ Bấm Test Connection → sẽ kết nối được ✅

🔹 6. (Tuỳ chọn) Kiểm tra lại

Vào MySQL và xem plugin đã đổi chưa:

SELECT user, host, plugin FROM mysql.user; 

Kết quả nên hiển thị:

username % mysql_native_password

https://drive.google.com/file/d/1IRs5vtd3gFq8zVkB75imKXOiHKJtMNma/view?usp=sharing

Bình luận
Zalo