如何通过 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
我真的是新手,而且肯定做得很糟糕。你能给我一些建议吗?提前谢谢了。
答案1
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