提问者:小点点

无法从主机连接到Docker容器中的mysql


我正在我的Mac笔记本电脑上运行Docker mysql容器。 以前,我可以通过mysql客户端从主机OS连接到它。 然而,不知何故,它被删除了,现在在我重新创建它之后,我再也无法连接到它。 我搜索了几十个类似的问题,但完全被难倒了。

下面是我如何创建它的:

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-h127.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/mysql.cnf并取消注释包含bind-address的行。 我尝试使用bind-address=0.0.0.0bind-address=127.0.0.1,然后显然退出并运行Docker容器重新启动mysql-zhxw-dev
  • 指定要使用连接到的端口-P 3306
  • 连接-h localhost-h 127.0.0.1-h 0.0.0.0,并省略-h
  • 在连接时指定--protocol=tcp

我不知道还能尝试些什么。


共1个答案

匿名用户

我在docker-compose中有一个模板,用mysql编写,也许它能帮到你。

Docker-compose.yml

version: "3.2"
services:
  mysql:
    image: mysql:latest
    ports:
      - "3306:3306"
    volumes:
      - /path-persistent-volumen:/var/lib/mysql/
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=password