Mysql

phpMyAdmin 到 mySQL 的隧道

  • September 26, 2019

如何通過 SSH 隧道將本地 phpMyAdmin 連接到遠端 mySQL dockerized 容器(example.com)?這是 docker compose 中的本地 phpMyadmin:

pma:
 image: phpmyadmin/phpmyadmin
 container_name: pma
 environment:
   - PMA_ARBITRARY=1
   - 'PMA_ABSOLUTE_URI=https://pma.local/'
 volumes:
   - './config.user.inc.php:/etc/phpmyadmin/config.user.inc.php'
 restart: always

這是 PMA 的自定義配置:

$cfg['Servers'][$i]['verbose']       = 'Localhost';
$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';
$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++;

使用 Core Tunnel 我在本地機器上設置了這個:

轉發埠 這是我在 example.com 上的測試容器:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

現在,如果我在 PMA 上輸入以下內容(啟用隧道後):

Server: 127.0.0.1
User: root
Password: my-secret-pw

我得到一個:

mysqli_real_connect(): (HY000/2002): Connection refused

我真的是這方面的新手,並且肯定會做一些非常糟糕的事情。你能給我一些建議嗎?提前謝謝了。

Docker 創建一個內部網路,他可能在其中對 Mysql 撒謊,鍵入“ifconfig”和“netstat -lptn”以查看伺服器數據。

嘗試使用“–network host”啟動 docker 並假設本地 ip,實例的 mysql 將偵聽 127.0.0.1 或“物理”伺服器的其他 ip。

另一種選擇是告訴 docker 使用這樣的選項進行 PAT 和 NAT

-p 127.0.0.1:3107:3106

所以你告訴他所有到達所有介面 127.0.0.1 的請求都轉到 docker 實例:3106

引用自:https://serverfault.com/questions/985722