我正在运行一个docker mysql映像,以下是docker-compose.yml文件的外观:
db: image: mysql environment: MYSQL_ROOT_PASSWORD: "" MYSQL_ALLOW_EMPTY_PASSWORD: yes ports: - "3306:3306"
这很好。
我的问题是:如何从主机(我的Macbook)上的命令行mysql客户端连接到在该容器上运行的MySQL实例?
澄清:
docker
mysql
我没有在本地运行的MySQL,因此应打开端口3306并准备使用它。
我用来启动容器的命令是: docker-compose run
docker-compose run
docker-compose up
自从您3306在 Docker主机 上发布端口后,您将可以从该主机本身连接到127.0.0.1:3306。
3306
127.0.0.1:3306
在这种情况下,docker-compose.yml文件的端口映射部分将被忽略。要考虑端口映射部分,您必须添加以下--service- ports选项:
docker-compose.yml
--service- ports
docker-compose run --service-ports db
请注意,默认情况下,当您告诉mysql客户端连接时,mysql客户端会尝试使用unix套接字进行连接localhost。因此请使用127.0.0.1而不是localhost:
localhost
127.0.0.1
$ 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监视器。命令以;结尾; 或\ 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服务器