使用本地 phpMyAdmin 連線到遠端 MySQL 資料庫

為了要管理遠端 MySQL 資料庫,還要在遠端主機安裝 phpMyAdmin 且不安全。本文分享如何在本地用 phpMyAdmin 連線到遠端 MySQL 資料庫。

首先先確保有設定好 SSH 無密碼登入,讓 SSH 連線可以掛在後台運行。

然後執行以下 SSH 指令連線到遠端主機,使用此方式連線會把本地的 port (這裡只 3306) 轉發到遠端主機的 (這裡只 3307):

sh
ssh -fNL 3307:localhost:3306 root@REMOTE_HOST

root@REMOTE_HOST 替換為實際連線的主機名稱

然後確認該 SSH 連線是否已經成功掛在後台運行:

sh
ps aux | grep ssh

現在可以來配置 phpMyAdmin 的設定:

sh
sudo vim /etc/phpmyadmin/config.inc.php

把以下設定貼到 Servers 設定的底部:

php
$cfg['Servers'][$i]['verbose']       = 'Local';
$cfg['Servers'][$i]['host']          = 'localhost';
$cfg['Servers'][$i]['port']          = '3306';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['extension']     = 'mysqli';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
$i++;

$cfg['Servers'][$i]['verbose']       = 'Remote Server 1'; // Your Remote Server Name
$cfg['Servers'][$i]['host']          = '127.0.0.1';
$cfg['Servers'][$i]['port']          = '3307';
$cfg['Servers'][$i]['connect_type']  = 'tcp';
$cfg['Servers'][$i]['extension']     = 'mysqli';
$cfg['Servers'][$i]['compress']      = FALSE;
$cfg['Servers'][$i]['auth_type']     = 'cookie';
$i++;

正常的話現在應該就可以用 phpMyAdmin 連線到遠端主機了。但如果使用 MySQL 8 在連線時,應該會遇到一個錯誤:

The server requested authentication method unknown to the client

當然還是有解方。先用 root 帳號登入 MySQL (CLI),然後執行以下:

sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

password 改成你的 MySQL root 帳號的密碼

現在終於可以舒舒服服地用 phpMyAdmin 囉!

啊!如果要移掉 3307 port 的話,可以執行這個指令:

sh
fuser -n tcp -k 3307

參考資料