运维开发网

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

运维开发网 https://www.qedev.com 2020-05-15 19:22 出处:网络 作者:运维开发网整理
我有一个docker的mysql映像运行,以下是docker-compose.yml文件的样子: db: image: mysql environment: MYSQL_ROOT_PASSWORD: "" MYSQL_ALLOW_EMPTY_PASSWORD: yes ports: - "3306:3306" 这工作正常 我的问题是:如何从主机上的命令行mysq
我有一个docker的mysql映像运行,以下是docker-compose.yml文件的样子:

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

这工作正常

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

澄清:

>我有一个macbook安装了Docker

>我有一个有mysql的Docker容器

>我想从我的Macbook上的Terminal连接到上述容器上运行的mysql实例

>我不想使用docker命令来做到这一点。相反,我想直接从终端使用mysql客户端(没有通过Docker容器进行隧道传输)。

我没有MySQL在本地运行,所以端口3306应该是开放和准备使用。

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

使用码头组合

由于您在Docker主机上发布了3306端口,因此该主机本身将连接到127.0.0.1:3306。

使用docker-compose运行

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

docker-compose run --service-ports db

附加说明

请注意,默认情况下,当您将其连接到本地主机时,mysql客户端尝试使用unix套接字进行连接。所以使用127.0.0.1而不是localhost:

$ mysql -h 127.0.0.1 -P 3306 -u root

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.6.26 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, 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.

mysql>

$ mysql -h localhost -P 3306 -u root

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

0

精彩评论

暂无评论...
验证码 换一张
取 消