我试图运行一个PhpMyAdmin的容器,该容器连接到我在Mac OS上安装的MySQL Community Server。
如下所示,我可以通过终端连接。
使用以下命令:
mysql --host=localhost --port=3306 --user=root --password="o_oGLZDI<1-t"
我无法使用docker中的PhpMyAdmin正确连接到MySQL。我尝试过以下命令行:
docker run --name myadmin -d -e PMA_HOST=127.0.0.1 -e PMA_PORT=3306 -p 8080:80 phpmyadmin/phpmyadmin
docker run --name myadmin -d -e PMA_HOST=localhost -e PMA_PORT=3306 -p 8080:80 phpmyadmin/phpmyadmin
当我尝试登录时,它们会生成这些错误:
#2002 - 拒绝连接 - 服务器没有响应(或者未正确配置本地服务器的套接字)。
#2002 - 没有这样的文件或目录 - 服务器没有响应(或者没有正确配置本地服务器的套接字)。
运行docker并使用正确的配置连接到MySQL服务器Mac OS所需的正确命令行是什么?
答案 0 :(得分:3)
你的命令:
docker run --name myadmin -d -e PMA_HOST=127.0.0.1 -e PMA_PORT=3306 -p 8080:80 phpmyadmin/phpmyadmin
这将指向localhost
,但指向phpmyadmin容器内的localhost
,而不指向机器的本地主机(运行mysql的地方)。
您可以在主机网络上运行容器,这将禁用容器网络。这意味着您将能够使用localhost访问您的mysql容器:
docker run --name myadmin --network=host -d -e PMA_HOST=127.0.0.1 -e PMA_PORT=3306 phpmyadmin/phpmyadmin
您可以在端口80(而非8080)上访问您的phpmyadmin,因为在指定--network=host
时未使用容器网络。 (可能需要调整防火墙以允许docker0)
另一个选项(更好的选项),特别是对于MacOS(自Docker版本17.06起),使用docker.for.mac.localhost
作为PMA_HOST
。这应该解析为你的mac内部地址(但我现在无法测试它)。
docker run --name myadmin -d -e PMA_HOST=docker.for.mac.localhost -e PMA_PORT=3306 -p 8080:80 phpmyadmin/phpmyadmin