透過 SSH 加密隧道,將本地連接埠轉發至遠端伺服器的 MySQL 連接埠,兼具強認證、加密傳輸、不破壞本地監聽限制。
bind-address = 127.0.0.1)~/.ssh/config)Host remotesql
Hostname webserver.domain.com
User joe
LocalForward *:13306 localhost:3306
*:13306:監聽本地所有介面 13306 埠 (關鍵:非 127.0.0.1,因 GUI 工具可能嘗試 socket 連線)localhost:3306:遠端伺服器視角的 MySQL 服務位址ssh -f -N remotesql
-f:背景執行-N:不執行遠端指令,僅轉發me.domain.com (本地主機名稱)13306mysql -u root -p -h me.domain.com -P 13306
| 現象 | 原因與解決 |
|---|---|
| Access denied | 遠端 MySQL 權限表無對應帳號,需授權 user@'localhost' 或 user@'%' |
| Connection refused | SSH 隧道未建立、MySQL 未啟動、bind-address 錯誤 |
| GUI 工具無法連線 | 嘗試 socket 連線,確認 SSH LocalForward 使用 *:13306 非 127.0.0.1:13306 |