无法将Docker PhpMyAdmin连接到MySQL Server Mac OS,错误#2002

时间:2018-02-07 23:52:51

标签: mysql macos docker phpmyadmin

描述

我试图运行一个PhpMyAdmin的容器,该容器连接到我在Mac OS上安装的MySQL Community Server

如下所示,MySQL正在运行。 mysql gui

如下所示,我可以通过终端连接。

enter image description here

使用以下命令:

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

当我尝试登录时,它们会生成这些错误:

127.0.0.1版本

  

#2002 - 拒绝连接 - 服务器没有响应(或者未正确配置本地服务器的套接字)。

localhost版本

  

#2002 - 没有这样的文件或目录 - 服务器没有响应(或者没有正确配置本地服务器的套接字)。

问题

运行docker并使用正确的配置连接到MySQL服务器Mac OS所需的正确命令行是什么?

1 个答案:

答案 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