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)
精彩评论