我有一个本地dockerized phpMyadmin和一个运行mySQL容器的远程docker服务。端口3306未在Internet上公开,我正在使用隧道:
ssh -f user@remotedb -L 3306:127.0.0.1:3306 -N
使用原始mysql客户端,我可以使用以下命令连接到sql服务:127.0.0.1/user/password。phpMyadmin无法达到它。这是它的配置:
pma:
image: phpmyadmin/phpmyadmin
container_name: pma
environment:
- PMA_ARBITRARY=1
- 'PMA_ABSOLUTE_URI=https://pma.local/'
- VIRTUAL_HOST=pma.local
volumes:
- './config.user.inc.php:/etc/phpmyadmin/config.user.inc.php'
restart: always
和自定义php文件:
$cfg['Servers'][$i]['verbose'] = 'Remote Server';
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$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++;
供参考,我正在使用此docker pma映像:https://github.com/phpmyadmin/docker。我在这里想念什么?我需要其他端口吗?非常感谢。
问题是,在容器本身上,端口3306上没有监听。该端口在主机上仍然可用,因此我的快速解决方案是使用docker0接口的IP(通常为172.17.0.1
)。
因此,在您的自定义pho文件中,您可能需要使用以下内容:
$cfg['Servers'][$i]['host'] = '172.17.0.1';