当前位置: 首页 > 面试题库 >

从本地主机连接到Docker MySQL容器?

罗光华
2023-03-14
问题内容

我正在运行一个docker mysql映像,以下是docker-compose.yml文件的外观:

db:
  image: mysql
  environment:
    MYSQL_ROOT_PASSWORD: ""
    MYSQL_ALLOW_EMPTY_PASSWORD: yes
  ports:
    - "3306:3306"

这很好。

我的问题是:如何从主机(我的Macbook)上的命令行mysql客户端连接到在该容器上运行的MySQL实例?

澄清:

  • 我有一台装有Docker的Macbook
  • 我有一个带有mysql的docker容器
  • 我想从Macbook的终端连接到上述容器上运行的mysql实例
  • 我不想使用docker命令来实现这一点。相反,我想mysql直接从终端使用客户端(而不通过docker容器进行隧道传输)。

我没有在本地运行的MySQL,因此应打开端口3306并准备使用它。

我用来启动容器的命令是: docker-compose run


问题答案:

自从您3306Docker主机 上发布端口后,您将可以从该主机本身连接到127.0.0.1:3306

使用 docker-compose run

在这种情况下,docker-compose.yml文件的端口映射部分将被忽略。要考虑端口映射部分,您必须添加以下--service- ports选项:

docker-compose run --service-ports db

附加说明

请注意,默认情况下,当您告诉mysql客户端连接时,mysql客户端会尝试使用unix套接字进行连接localhost。因此请使用127.0.0.1而不是localhost

 $ mysql -h 127.0.0.1 -P 3306 -u root

欢迎使用MySQL监视器。命令以;结尾; 或\ g。您的MySQL连接ID是1服务器版本:5.6.26 MySQL Community
Server(GPL)

版权所有(c)2000、2015,Oracle和/或其分支机构。版权所有。

Oracle是Oracle Corporation和/或其分支机构的注册商标。其他名称可能是其各自所有者的商标。

输入“帮助;” 或’\ h’寻求帮助。键入“ \ c”以清除当前输入语句。

mysql>

$ mysql -h localhost -P 3306 -u root

错误2002(HY000):无法通过套接字’/var/run/mysqld/mysqld.sock’(2)连接到本地MySQL服务器



 类似资料:
  • 澄清: 我有一台安装了Docker的macbook 我有一个带有MySQL的docker容器 我想从MacBook上的终端连接到在上述容器上运行的mysql实例 我不想使用命令来实现此操作。相反,我想直接从终端使用客户机(而不通过docker容器隧道进入)。 我没有在本地运行MySQL,所以端口3306应该是打开的,可以随时使用。 我用来启动容器的命令是:

  • 我有一个运行java进程的docker容器,我试图将该进程连接到本地主机上运行的rabbitmq。 以下是我到目前为止所做的步骤: null 能够ping local-ip和curl rabbitmq admin api [{“名称”:“/”,“跟踪”:false}] 当我试图从容器内部telnet时,我得到 由:java.net.ConnectException:在java.net.plains

  • 问题内容: 由于wamp服务器,我试图将我的android应用程序连接到本地主机url,但它不起作用。我的目标是获取json数据并解析这些数据。对于我的测试,我使用的是设备而不是模拟器,并且使用AndroidManifest.xml中的权限: 我的网址看起来像这样: 我试过了 : 但是到目前为止,它从未起作用: 然后我尝试了在互联网上找到的json url测试:http : //headers.j

  • 问题内容: 所以我有一个Nginx在docker容器中运行,我有一个mysql在本地主机上运行,​​我想从我的Nginx内部连接到MySql。MySql在localhost上运行,并且没有将端口暴露给外界,因此它绑定在localhost上,而不绑定在计算机的IP地址上。 有什么方法可以从此Docker容器中连接到此MySql或localhost上的任何其他程序吗? 此问题与“如何从Docker容器

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

  • 试图连接一个简单的JMX监控。托管应用程序和监控工具位于同一台服务器上。当试图连接一个错误 00:30:55610致命http-8080-6 SiteListener:makeJmxConnection:99-java.io。IOException:检索RMIServer存根失败:javax.naming。ServiceUnavailableException[根异常为java.rmi.Conne