一尘不染

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

mysql

我正在运行一个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


阅读 409

收藏
2020-05-17

共1个答案

一尘不染

使用 docker-compose up

自从您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服务器

2020-05-17