【发布时间】:2020-06-13 06:56:36
【问题描述】:
我正在我的 Mac 笔记本电脑上运行 Docker mysql 容器。以前我可以使用 mysql 客户端从主机操作系统连接到它。但是,不知何故它被删除了,现在我重新创建它后,我无法再连接到它。我已经搜索了几十个类似的问题,但完全被难住了。
这是我创建它的方法:
docker container run --name mysql-zhxw-dev -p 3306:3306 --expose=3306 -v zhxw-local-db-:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql:5.7.30
每次我从主机操作系统运行mysql -u root -h 127.0.0.1 时,我都会得到:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)
我可以登录容器,并从内部连接到mysql:
docker container exec -it mysql-zhxw-dev bash
mysql -u root <-- connects fine
我试过了:
- 省略命名卷
- 指定密码
- mysql的各种版本,包括5.6和5.7
- 使用
docker container exec登录容器,安装vi,编辑/etc/mysql/mysql.conf.d/mysqld.cnf并取消注释包含bind-address的行。我用bind-address = 0.0.0.0和bind-address = 127.0.0.1都试过了,然后显然退出并运行docker container restart mysql-zhxw-dev。 - 指定要使用
-P 3306连接的端口 - 与
-h localhost、-h 127.0.0.1、-h 0.0.0.0连接,并省略-h - 连接时指定
--protocol=TCP
我不知道还能尝试什么。
【问题讨论】:
-
你试过连接Docker容器的IP地址吗?使用
docker inspect <container-id> | grep inet查找IP 地址。 -
我试过
docker container inspect mysql-zhxw-dev | grep inet,但没有包含“inet”的行。所以我改为搜索“ip”,在NetworkSettings对象中有几个IPAddress条目。 (两个 IP 相同。)我尝试以这种方式连接 (mysql -u root -h 172.17.0.2),但它根本没有响应 - 只是超时。