Docker MySQL:ERROR 2002(HY000):无法通过套接字 '/var/run/mysqld/mysqld.sock'(2)连接到本地MySQL服务器。

5

我正在尝试使用mysql cli连接到mysql服务器。图像是使用以下命令创建的:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=****** -d mysql

Docker容器正在运行。执行docker ps命令输出:
johnd@john-pc:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
598c0f8680dc        mysql               "docker-entrypoint.s…"   4 minutes ago       Up 4 minutes        3306/tcp, 33060/tcp    some-mysql

当我输入以下命令时: mysql -h 127.0.0.1 -P 3306 -u root -p 它会返回:

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

我还尝试了使用--protocol=tcp属性。如何在客户端终端上连接运行在docker上的mysql服务器,而不是从另一个docker中连接?
编辑: 我还尝试使用以下命令连接mysql: docker run -it --rm mysql mysql -h127.0.0.1 -uexample-user -p 它返回相同的错误。

这不是重复的,因为我正在使用Docker。 - Matej J
3个回答

3

您正在连接本地的SQL服务器,但是您没有将Docker容器端口映射到主机上。请尝试通过以下方式将端口映射到主机:

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

然后重试:

mysql -h 127.0.0.1 -P 3306 -u root -p


你可能需要在连接命令中添加“--protocol=tcp”。 - nivhty
3
我尝试使用这个命令 mysql -h 127.0.0.1 -P 3306 -u root --protocol=tcp -p,但它返回了相同的错误。 - Matej J
请问您能否粘贴一下 docker container ls 的输出结果吗? - Frank Louwers
1
你是否使用我的命令启动了容器?SQL 容器需要一段时间才能启动,请尝试使用 docker logs some-mysql 命令检查其日志,以查看发生了什么。 - nivhty

1

我也遇到了同样的错误,请记住先在容器中启动mysql服务。

在您的容器中执行

/etc/init.d/mysql start

0

使用像 127.0.0.1 这样的内部 docker IP 对我没有用

我使用了我的 POD 的 IP,它可以工作

mysql -h 10.10.10.41 -P 3306 -u root -p

我仍然不明白为什么之前和之后我都能登录,但在这个命令之后我却不能登录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接