【问题标题】:Docker mysql: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)Docker mysql: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
【发布时间】:2019-09-28 01:50:07
【问题描述】:

我正在尝试使用 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)的终端从客户端连接到在 docker 上运行的 mysql 服务器

编辑: 我还尝试使用以下命令连接到 mysql:

docker run -it --rm mysql mysql -h127.0.0.1 -uexample-user -p

返回同样的错误

【问题讨论】:

  • 这不是重复的,因为我使用的是 docker

标签: mysql docker containers


【解决方案1】:

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

您正在连接到本地主机的 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”。
  • 我尝试使用此命令mysql -h 127.0.0.1 -P 3306 -u root --protocol=tcp -p,但它返回相同的错误
  • 你能粘贴docker container ls的输出吗?
  • 您是否使用我的命令启动了容器? sql容器启动需要一段时间,尝试使用docker logs some-mysql查看它的日志看看发生了什么
【解决方案2】:

同样的错误,记得先在你的容器中启动 mysql 服务。

在你的容器中执行

/etc/init.d/mysql start

【讨论】:

    猜你喜欢
    • 2014-04-12
    • 2021-08-15
    • 2012-09-19
    • 2018-08-01
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 2017-02-12
    相关资源
    最近更新 更多