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

标签 mysql macos docker phpmyadmin

描述

我正在尝试使用 PhpMyAdmin 运行一个容器连接到 MySQL Community Server我安装在我的 Mac 操作系统上。

如下所示,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 - Connection refused — The server is not responding (or the local server's socket is not correctly configured).

本地主机版本

#2002 - No such file or directory — The server is not responding (or the local server's socket is not correctly configured).

问题

以正确配置运行 docker 以连接到我的 MySQL Server Mac OS 所需的正确命令行是什么?

最佳答案

你的命令:

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 的地方)。 您可以在主机网络上运行容器,这将禁用容器网络。这意味着您将能够使用本地主机访问您的 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)

另一种选择(更好的选择)是使用 docker.for.mac.localhost 作为 PMA_HOST,尤其是对于 MacOS(从 Docker 版本 17.06 开始)。这应该解析为您的 mac 内部地址(但我现在无法对其进行测试)。

docker run --name myadmin -d -e PMA_HOST=docker.for.mac.localhost -e PMA_PORT=3306 -p 8080:80 phpmyadmin/phpmyadmin

关于mysql - 无法将 Docker PhpMyAdmin 连接到 MySQL Server Mac OS,错误 #2002,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48675266/

相关文章:

linux - Bash 脚本在进入 docker 容器时退出

mysql - 在两台计算机之间同步mySQL数据库

c++ - 如何在 Linux(和 OSX)上查询分配的内存量?

macos - 如何在 OS X 的命令行上生成 PDF 中特定页面的缩略图?

c++ - 在 double 组上使用 unordered_map

mysql - 在 docker-compose.yaml 中配置应用程序和 MySQL DB - 无法打开 JDBC 连接

.net - Docker 构建镜像失败 - 没有这样的文件或目录

mysql - 替换MySql数据库中的文本

php - 基于 session 的登录在远程服务器上不起作用

mysql - 查询没有时间的 date_created 与没有时间的 last_updated 相同