Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Phần Mềm

Cách cho phép kết nối từ xa đến MySQL

Nếu bạn làm việc với cơ sở dữ liệu MySQL, chắc hiểu rõ thách thức bảo mật: tấn công SQL injection, brute force... Việc bảo vệ dữ liệu khi truy cập từ xa càng khó khăn hơn.

Có cách cấu hình MySQL cho phép kết nối từ xa, nhưng cần cẩn trọng vì điều này có thể làm database trở thành mục tiêu dễ dàng cho hacker. Nếu muốn cho phép kết nối từ xa an toàn, hãy tham khảo các bước dưới đây.

Trước khi bắt đầu

Trước khi thay đổi MySQL, hãy sao lưu database, đặc biệt trên server sản xuất (production). Mọi thay đổi đều có thể gây mất dữ liệu nghiêm trọng nếu có sự cố.

Thay đổi cài đặt kết nối có thể khiến bạn không truy cập được server sau đó. Nên thử nghiệm trên MySQL cục bộ trước khi áp dụng từ xa.

Cũng cần cách an toàn để kết nối server từ xa. SSH (Secure Shell) thường là lựa chọn tốt nhất, cho phép kết nối an toàn. Cũng dùng SSH cho server cục bộ (như Raspberry Pi).

Cách cho phép kết nối từ xa đến MySQL

Hướng dẫn này giả định bạn đã có quyền truy cập trực tiếp hoặc từ xa (qua SSH) vào server chạy MySQL.

Nếu chưa có truy cập SSH, bạn không thể cấu hình MySQL cho phép kết nối từ xa trừ khi tài khoản root MySQL đã cho phép. Hãy thiết lập kết nối SSH trước.

Chỉnh sửa file cấu hình MySQL

Bước đầu tiên: chỉnh sửa file cấu hình MySQL. Giả định bạn đã kết nối server và có quyền truy cập console.

Hoặc cấu hình MySQL cục bộ: terminal trên Mac/Linux, trình soạn thảo văn bản trên Windows.

  1. Linux: Mở terminal/SSH, gõ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf để chỉnh sửa bằng nano (vị trí mặc định).
Cách cho phép kết nối từ xa đến MySQL
  1. Windows: Mở File Explorer, truy cập thư mục cài MySQL (ví dụ: C:/Program Files/MySQL/MySQL Server 8.0). Mở file my.ini bằng Notepad. Nếu không có, hãy tạo file.
Cách cho phép kết nối từ xa đến MySQL
  1. Mac: Mở terminal, gõ sudo nano /usr/local/etc/my.cnf (file cấu hình mặc định nếu cài MySQL qua Homebrew).
Cách cho phép kết nối từ xa đến MySQL

Đường dẫn trên là mặc định. Nếu lệnh không chạy, hãy tìm thủ công các file my.cnf, mysqld.cnf hoặc my.ini.

Thiết lập địa chỉ IP Bind-Address an toàn

  1. Mở file cấu hình, dùng phím mũi tên tìm mục bind-address. Giá trị mặc định thường là 127.0.0.1 (chỉ cho phép kết nối cục bộ).
Cách cho phép kết nối từ xa đến MySQL
  1. Để cho phép kết nối từ IP công cộng của bạn, thay 127.0.0.1 bằng IP công cộng đó. Hoặc thay bằng IP thiết bị/server được phép kết nối.
Cách cho phép kết nối từ xa đến MySQL
  1. Để cho phép tất cả kết nối từ xa (rất rủi ro, không dùng cho production), thay 127.0.0.1 bằng 0.0.0.0.
Cách cho phép kết nối từ xa đến MySQL
  1. Ghi nhớ giá trị port trong mục Basic Settings. Mặc định là 3306. Có thể thêm dòng port = xxxx với giá trị port mong muốn.
Cách cho phép kết nối từ xa đến MySQL
  1. Lưu file: Linux/Mac nhấn Ctrl+O rồi Ctrl+X (Mac dùng Command). Windows: File > Save.
Cách cho phép kết nối từ xa đến MySQL
  1. Linux/Mac: Khởi động lại MySQL: mysql.server stop && mysql.server start hoặc mysql.server restart. Có thể cần sudo và đường dẫn đầy đủ (ví dụ: /usr/local/bin/mysql.server).
Cách cho phép kết nối từ xa đến MySQL
  1. Nếu lệnh trên thất bại, thử sudo service mysql restart.
Cách cho phép kết nối từ xa đến MySQL
  1. Windows: Mở PowerShell (Admin). Gõ net stop mysql80 rồi net start mysql80, thay mysql80 bằng tên dịch vụ thực tế.
Cách cho phép kết nối từ xa đến MySQL

Nếu không chắc tên dịch vụ, gõ net start để xem. Nếu không reload được cấu hình, hãy khởi động lại server.

Cấu hình Firewall

Lúc này MySQL đã cho phép kết nối từ IP đã thiết lập (hoặc tất cả nếu dùng 0.0.0.0). Tuy nhiên, firewall thiết bị/mạng vẫn chặn kết nối.

Hầu hết server/PC dùng firewall chặn cổng trừ khi được cấp phép. Cấu hình khác nhau tùy Windows hay Linux. Firewall Mac tắt mặc định, thường không cần cấu hình thêm.

Cấu hình Firewall Linux

Nhiều server Linux dùng iptables. Cách cấu hình:

  1. Mở terminal/SSH, gõ: sudo iptables -A INPUT -p tcp -s X.X.X.X --dport YYYY -j ACCEPT. Thay X.X.X.X bằng IP được phép kết nối từ đó, YYYY bằng port MySQL (ví dụ 3306).
Cách cho phép kết nối từ xa đến MySQL
  1. Để vĩnh viễn trên Debian/Ubuntu: sudo netfilter-persistent save và sudo netfilter-persistent reload.
Cách cho phép kết nối từ xa đến MySQL

Nếu iptables không phải mặc định, xem tài liệu distro. Nếu thiếu gói (như netfilter-persistent), cài qua kho phần mềm (ví dụ: sudo apt install netfilter-persistent).

Cấu hình Firewall Windows

Trên Windows Server/PC:

  1. Chuột phải menu Start, chọn Run.
Cách cho phép kết nối từ xa đến MySQL
  1. Gõ wf.msc, Enter.
Cách cho phép kết nối từ xa đến MySQL
  1. Chọn Inbound Rules > New Rule.
Cách cho phép kết nối từ xa đến MySQL
  1. Chọn Port > Next.
Cách cho phép kết nối từ xa đến MySQL
  1. Chọn TCP, gõ port 3306 (hoặc port từ file cấu hình), Next.
Cách cho phép kết nối từ xa đến MySQL
  1. Giữ mặc định Allow the connection, Next.
Cách cho phép kết nối từ xa đến MySQL
  1. Áp dụng cho tất cả loại mạng, Next.
Cách cho phép kết nối từ xa đến MySQL
  1. Đặt tên mô tả (ví dụ: MySQL), Finish.
Cách cho phép kết nối từ xa đến MySQL

Nếu vẫn không kết nối được, lặp lại tạo Outbound Rule với cùng thông tin. Có thể cần cấu hình router mạng cục bộ mở cổng cho kết nối vào/ra database.

Kết nối đến Server MySQL từ xa

Sau khi cấu hình, dùng lệnh mysql (mysql.exe trên Windows) từ terminal/PowerShell để kết nối.

Windows: cần cài MySQL cục bộ. Mac: brew install mysql. Linux: sudo apt install mysql.

Kết nối MySQL trên Linux/Mac

  1. Mở terminal, gõ: mysql -u username -h X.X.X.X:XXXX -p. Thay X.X.X.X:XXXX bằng IP server và port (ví dụ: 100.200.100.200:3306), username bằng user MySQL.
Cách cho phép kết nối từ xa đến MySQL
  1. Nhập mật khẩu khi được hỏi. Nếu thành công, thông báo hiện ra.

Kết nối MySQL trên Windows

  1. Mở PowerShell (Admin).
Cách cho phép kết nối từ xa đến MySQL
  1. Gõ cd "C:\Program Files\MySQL\MySQL Workbench 8.0\" (thay đường dẫn phù hợp phiên bản).
Cách cho phép kết nối từ xa đến MySQL
  1. Gõ .\mysql.exe -u username -h X.X.X.X:XXXX -p. Thay IP:port và username (có thể dùng root). Làm theo hướng dẫn trên màn hình.
  2. Nhập mật khẩu để hoàn tất.
Cách cho phép kết nối từ xa đến MySQL

Nếu thất bại, kết nối SSH vào server hosting MySQL, dùng đối số -h localhost, tạo user phù hợp theo bước dưới.

Cho phép user từ xa truy cập Database MySQL

Đến đây bạn có thể kết nối từ xa bằng user root hoặc user có quyền cao. Vì không an toàn, nên tạo user hạn chế hơn.

User này chỉ truy cập database được chỉ định, không thể tạo user mới hay truy cập database khác.

Cần có khả năng đăng nhập MySQL từ xa. Nếu root không cho phép từ xa, truy cập shell server qua SSH hoặc trực tiếp.

  1. Trong shell MySQL từ xa, gõ: CREATE USER "username"@"x.x.x.x" IDENTIFIED BY "password";. Thay username, x.x.x.x (IP kết nối), password.
Cách cho phép kết nối từ xa đến MySQL
  1. Cấp quyền: GRANT ALL ON databasename.* TO username@"x.x.x.x";. Thay databasename, username, IP. Dùng * thay databasename để cấp quyền tất cả database.
Cách cho phép kết nối từ xa đến MySQL

Sau khi cấp quyền, dùng lệnh kết nối từ xa với user mới (ví dụ: mysql -u username -h X.X.X.X:XXXX -p).

Bảo mật dữ liệu Database

Dù MySQL hay SQL khác, bảo mật kết nối là then chốt. Tạo SSH key cho truy cập từ xa thay vì dùng mật khẩu dễ đoán.

Lo ngại mất dữ liệu? Sao lưu database online tự động. Hầu hết server Linux — dễ dàng tự động sao lưu file. Trên Windows cũng có thể thiết lập sao lưu tự động tương tự để khôi phục khẩn cấp.