将 MySQL 工作台与 MySQL 容器连接

zer*_*ing 11 mysql mysql-workbench

我从Dockerhub 中提取了 MySQL 容器,它正在我的 macbook pro 上运行,如下所示

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
12cd3deaa3f0        mysql:latest        "/entrypoint.sh mysql"   47 hours ago        Up 10 minutes       3306/tcp            mysqldb
Run Code Online (Sandbox Code Playgroud)

然后我下载了 MySQL 工作台并尝试将它与 MySQL 容器连接,但它不起作用。它显示连接错误。

Your connection attempt failed for user 'root' from your host to server at 192.168.99.102:3306:
Can't connect to MySQL server on '192.168.99.102' (60)
Run Code Online (Sandbox Code Playgroud)

来自 docker 机器的 IP 是

docker-machine ip default
192.168.99.100
Run Code Online (Sandbox Code Playgroud)

正如您在上面看到的那样,来自 MySQL 的端口是 3306。

要导出 MySQL 端口,我尝试使用语句

docker run -d -P mysql:latest mysqldb
Run Code Online (Sandbox Code Playgroud)

它根本不起作用。我究竟做错了什么?

小智 9

看起来您在没有设置-p 3306:3306参数的情况下运行了容器。此外,您似乎在 MySQL Workbench 的主机名中输入了错误的 IP 地址。我建议按照以下说明从头开始:

  1. 运行mysql服务器。(将密码更改为admin您想要的任何内容)

docker run -e MYSQL_ROOT_PASSWORD=admin --name mysql -d -p=3306:3306 mysql

  1. 通过运行获取默认 docker 虚拟机的 IP 地址

docker-machine ip default

  1. 复制您将作为上一个命令的结果获得的 IP 地址。(在你的情况下,它应该是 192.168.99.100)
  2. 打开 MySQL Workbench 并创建一个新连接。将您复制的 IP 地址粘贴到“主机名”字段中。

你现在应该已经准备好了。


小智 1

该参数-P将容器的导出端口自动绑定到主机的可用端口。

以下命令应将容器端口 3306 绑定到主机的端口 3306。请参阅:发布或公开端口

docker run -d -p 3306:3306 mysql:latest mysqldb
Run Code Online (Sandbox Code Playgroud)