当前位置: 首页 > 知识库问答 >
问题:

无法连接到MySQL 5.7运行作为docker容器从docker主机使用mysql客户端

冉伯寅
2023-03-14

在浏览了SOF的以下链接后,我仍然面临着这个问题,没有任何推理或解决方案。

参考资料:

  • 连接到mysql docker容器

Mysql 5.7在我的本地计算机中作为容器运行。服务器启动后,使用root用户或创建的新用户连接到服务器时,会在localhost/0.0.0/127.0.0.1上发生故障。即使在禁用firewald之后,连接也会失败,并出现相同的错误。我可能对这种连接做了一些非常错误的事情。任何建议都会有帮助。

version: '3.5'
services:
  service:
    image: mysql:5.7
    #build:
    #  context: ./
    #  dockerfile: Dockerfile
    environment:
      MYSQL_USER: user
      MYSQL_PASSWORD: manage
      MYSQL_ROOT_PASSWORD: manage
      MYSQL_DATABASE: testapp
    ports:
      - published: 3306
        target: 3306

下面是docker compose up-d之后的输出

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
45ba02e6e457        mysql:5.7           "docker-entrypoint.s…"   52 seconds ago      Up 50 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp   

下面是连接到mysql容器的尝试。

mysql -u root -h localhost -pmanage
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

mysql -u root -h 0.0.0.0 -pmanage
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

mysql -u root -h 127.0.0.1 -pmanage
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

运行容器的IP工作正常。但这并不是一个解决方案,因为IP会随着时间而变化。

mysql -u root -h 172.31.0.2 -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.30 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

我不是在寻找另一个docker命令的解决方案。如何连接到mysql容器从docker主机使用mysql客户端。

共有1个答案

何乐
2023-03-14

您需要在连接url中使用--protocol=tcp

mysql -u root -h localhost --protocol=tcp

您的mysql正在docker容器中运行。因此,您必须通过TCP进行连接,而本地套接字对此不可用。这基本上是这个问题的重复。

 类似资料:
  • 厘斯7.8 docker run -d -p 8080:80 --name nginxtest nginx docker ps CONTAINER ID Image PORTS NAMES xxxxxxxx nginx 0.0.0.0:8080- curl localhost:8080 < br > curl:(56)Recv失败:连接被对等方重置 netstat-tulpn<br>tcp6 0

  • 问题内容: 我正在运行一个docker mysql映像,以下是docker-compose.yml文件的外观: 这很好。 我的问题是:如何从主机(我的Macbook)上的命令行mysql客户端连接到在该容器上运行的MySQL实例? 澄清: 我有一台装有Docker的Macbook 我有一个带有mysql的docker容器 我想从Macbook的终端连接到上述容器上运行的mysql实例 我不想使用命

  • (由于我对Docker或mysql管理的了解有限,这可能是一个愚蠢的问题,但由于我花了整整一个晚上讨论这个问题,所以我敢问这个问题。) 概括地说 我想在docker容器中运行mysql,并从我的主机连接到它。到目前为止,我取得的最好成绩是: 更多详细信息 我正在使用以下: 在有此文件的目录中,我可以成功地构建映像并运行它: 当我连接到图像上时,它似乎工作得很好: 然而,我并没有从主持人那里获得那么

  • 问题内容: 所以我想连接到我在主机上运行的mongodb(DO Drop,Ubuntu 16.04)。它在localhost 的默认端口上运行。 然后,我使用mup将我的Meteor应用程序部署在我的DO Drop上,该DO Drop使用docker在容器内运行Meteor应用程序。到目前为止,一切都很好。使用标准连接URL将应用程序连接到mongodb。现在我有以下问题: 显然不能在docker

  • 我已经使用docker工具箱在视窗机器上安装了docker。我也在我的视窗机器上安装了mysql,服务器运行在端口3306上(localhost-127.0.0.1-在docker机器之外)。我在一个名为“micra-workq-svc”的docker网络内部的docker容器中运行一个冲刺启动应用程序,我希望在docker内部运行的应用程序连接到本地主机。我花了几个小时在谷歌上搜索,没有一个链接

  • 我已经创建了一个MySQL数据库的映像,并在容器中运行它。我希望它在端口3406/3407上运行,因此我调用docker run命令如下所示: 如果我看我的容器,它看起来是这样的: 我非常想连接到我的数据库现在,但我似乎不能使我的URL工作。 这是我的URL的样子: