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

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

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

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

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

Terminal window
ssh -fNL 3307:localhost:3306 root@REMOTE_HOST
Tip

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

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

Terminal window
ps aux | grep ssh

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

Terminal window
sudo vim /etc/phpmyadmin/config.inc.php

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

config.inc.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 在連線時,應該會遇到一個錯誤:

Danger

The server requested authentication method unknown to the client

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

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

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

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

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

Terminal window
fuser -n tcp -k 3307

參考資料