Mysql
phpMyAdmin 到 mySQL 的隧道
如何通過 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 我在本地機器上設置了這個:
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