萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 遠端連線全攻略:授權、SSH 隧道、HTTP 隧道一網打盡

方法一:GRANT 授權(最原生)

-- 允許所有 IP 以 root 完整權限連線(僅示範,生產請限制 IP 與權限)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'strong_password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

常用權限模板:

  • 唯讀帳號:GRANT SELECT ON db.* TO 'readonly'@'%' IDENTIFIED BY 'pwd';
  • 開發帳號:GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON db.* TO 'dev'@'192.168.1.%' IDENTIFIED BY 'pwd';
  • DBA 帳號:GRANT ALL ON *.* TO 'dba'@'10.0.0.%' IDENTIFIED BY 'pwd';

查看權限:SHOW GRANTS FOR 'user'@'host';;回收:REVOKE ALL ON *.* FROM 'user'@'host';。

方法二:phpMyAdmin 設定允許 IP

編輯 httpd-xampp.conf(或對應 Apache 配置):

<Directory "/path/to/phpmyadmin">
  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 192.168.1.100 203.0.113.0/24
</Directory>

重啟 Apache 生效。

方法三:SSH 隧道(Navicat / DataGrip / DBeaver 內建)

  1. SSH 連線資訊:Host、Port(22)、User、Password/Key。
  2. MySQL 連線資訊:Host=127.0.0.1、Port=3306、User/Pass。
  3. 工具自動建立 ssh -L 3306:127.0.0.1:3306 user@server 隧道,本地 3306 映射遠端 3306。

優點:MySQL 完全不對外開放 3306,安全性最高。

方法四:HTTP 隧道(Navicat 專用,適合無 SSH 權限的虛擬主機)

  1. 將 Navicat 安裝目錄下的 ntunnel_mysql.php 上傳至網站根目錄(需支援 PHP)。
  2. Navicat 新建連線 → HTTP 標籤 → 勾選「使用 HTTP 隧道」 → 網址填 https://domain/ntunnel_mysql.php。
  3. 一般標籤 Host 填 localhost,帳密照常。

原理:PHP 腳本在伺服器端代理 MySQL 協定,繞過防火牆限制。

方法五:Putty SSH 端口轉發(通用)

putty.exe -ssh user@server -L 3306:127.0.0.1:3306 -N

本地 Navicat 連線 127.0.0.1:3306 即通往遠端資料庫。

安全建議

  • 生產環境嚴禁 root@'%',建立最小權限帳號並限制來源 IP。
  • 啟用 SSL 連線:REQUIRE SSL。
  • 定期審計 mysql.user、db、tables_priv 等授權表。
copyright © 萬盛學電腦網 all rights reserved