Skip to content

Truy cập MySQL từ xa ​

Trong thực tế, bạn có thể cần kết nối tới MySQL/MariaDB trên máy chủ từ máy tính của mình (bằng HeidiSQL, TablePlus…), hoặc dùng máy chủ đó làm database từ xa (remote database) cho nhiều nơi cùng sử dụng.

Cách 1: Mở port 3306 (không khuyến khích) ​

Mở port cơ sở dữ liệu 3306 là cách nhanh nhất để kết nối tới remote database, nhưng cũng kém an toàn nhất: cổng 3306 được công khai, ai cũng có thể truy cập cổng này để dò mật khẩu. Nếu đặt mật khẩu yếu, database sẽ dễ bị tấn công.

Nếu vẫn dùng cách này:

  1. Bật Truy cập từ xa cho người dùng cơ sở dữ liệu (xem Cơ sở dữ liệu)
  2. Mở cổng 3306 trong tường lửa. Nên giới hạn chỉ cho phép IP của máy cần kết nối thay vì mở cho mọi IP

Cách 2: Thông qua SSH Tunnel (khuyến khích) ​

Với SSH Tunnel, phần mềm quản lý database kết nối tới máy chủ qua SSH (cổng SSH vốn đã mở), rồi từ bên trong máy chủ kết nối tới MySQL ở 127.0.0.1. Cổng 3306 không cần mở ra Internet và người dùng cơ sở dữ liệu không cần bật Truy cập từ xa.

Chuẩn bị:

  1. Tạo SSH Key trên máy tính của bạn, hoặc bấm Tạo ngẫu nhiên SSH Key khi thêm SSH Key vào máy chủ ở bước 2 rồi tải file private key về (OpenSSH Key cho ssh.exe/TablePlus, PuTTY Key cho plink.exe)
  2. Thêm SSH Key vào máy chủ. Ghi nhớ người dùng Linux mà bạn chọn khi thêm key (ví dụ root), đây là Username SSH ở các bước bên dưới
  3. Chuẩn bị tên và mật khẩu của người dùng cơ sở dữ liệu

Hướng dẫn dùng HeidiSQL (Windows) ​

Hướng dẫn này dùng ssh.exe (OpenSSH, có sẵn trên Windows 10/11) với private key định dạng OpenSSH, ví dụ file id_ed25519 hoặc id_rsa tạo bằng lệnh ssh-keygen (xem Tạo SSH Key trên Windows).

  1. Mở HeidiSQL, bấm New để tạo session mới và đặt tên cho session
  2. Ở tab Settings:
    • Network type: chọn MariaDB or MySQL (SSH tunnel)
    • Hostname / IP: nhập 127.0.0.1
    • User: tên người dùng cơ sở dữ liệu
    • Password: mật khẩu của người dùng cơ sở dữ liệu
    • Port: 3306
  3. Chuyển sang tab SSH tunnel:
    • Đánh dấu ô Use SSH tunnel
    • SSH executable: chọn ssh.exe
    • SSH host + port: nhập IP máy chủ và cổng SSH (mặc định 22)
    • Username: người dùng Linux đã chọn khi thêm SSH Key vào máy chủ
    • Private key file: chọn file private key OpenSSH tương ứng với SSH Key đã thêm, ví dụ C:\Users\<tên>\.ssh\id_ed25519
    • Local port: giữ giá trị mặc định (ví dụ 3307), miễn là cổng này chưa bị chương trình khác dùng trên máy tính của bạn
  4. Bấm Save, sau đó bấm Open để kết nối

TIP

Nếu bạn đang có key định dạng PuTTY (.ppk), hãy chọn plink.exe ở ô SSH executable thay cho ssh.exe. Không dùng file .ppk với ssh.exe và ngược lại. Bạn có thể chuyển đổi giữa hai định dạng bằng PuTTYgen (Load file key, sau đó Save private key hoặc Conversions > Export OpenSSH key).

Hướng dẫn dùng TablePlus ​

  1. Bấm Create a new connection, chọn MySQL hoặc MariaDB rồi bấm Create
  2. Điền thông tin database:
    • Name: tên gợi nhớ cho kết nối
    • Tag: chọn production (tùy chọn, giúp nhận biết kết nối tới máy chủ thật)
    • Host: 127.0.0.1
    • Port: 3306
    • User và Password: tên và mật khẩu của người dùng cơ sở dữ liệu
  3. Bấm Over SSH để mở phần cấu hình SSH, sau đó điền:
    • Server: IP máy chủ
    • Port: cổng SSH (mặc định 22)
    • User: người dùng Linux đã chọn khi thêm SSH Key vào máy chủ
    • Đánh dấu ô Use SSH key và chọn file private key tương ứng
  4. Bấm Test để kiểm tra, sau đó bấm Connect