如何连接到在本地计算机上的容器中运行的MySQL实例?

问题描述 投票:0回答:1

我已使用我发现的here指令在docker容器中设置了MySQL实例。我可以通过扑向容器中,然后像这样运行MySQL客户端来连接到实例:

docker exec -it mySQLContainer bash

然后

mysql -uroot -p

但是我看不到从主机连接到实例。到目前为止,我已经尝试了以下方法:

mysql localhost
mysql -h localhost -P 3306

返回

错误2002(HY000):无法通过套接字连接到本地MySQL服务器'/tmp/mysql.sock'(2)

mysql -h localhost -P 3306 --protocol=tcp -u root
mysql -h 127.0.0.1 -P 3306 --protocol=tcp -u root
mysql -h 127.0.0.1 -P 3306 -u root

返回

错误2003(HY000):无法连接到'localhost'上的MySQL服务器(61)

我还发现了关于同一问题的其他一些问题,但解决方案似乎无效。谁能看到我在这里做错的事情或为了连接需要做什么?

注意:这是我为MySQL生成的容器-如果需要添加其他信息,请告诉我:

docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
9f1fc20d66c0        mysql:latest        "docker-entrypoint.s…"   2 days ago          Up 2 days           3306/tcp, 33060/tcp   plugins

UPDATE:这是我的容器日志的最后两行-不确定是否相关:

2020-02-07T20:02:22.887174Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
2020-02-07T20:02:22.982168Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
mysql database macos docker
1个回答
1
投票

[执行此操作时,将使用映射到3306的外部端口启动容器。

例如,这是我启动运行Percona Server 8.0的容器的方式:

docker run -d --name ps8 -e MYSQL_ROOT_PASSWORD=XXX -p 6603:3306 percona/percona-server:8.0

然后我可以连接到外部端口,Docker会将其发送到容器内的3306:

mysql -h 127.0.0.1 -P 6603 -uroot -pXXX

我使用端口6603,因为我的笔记本电脑上也使用3306在运行一个MySQL实例。但是,如果您要使用默认端口3306并且它没有冲突,那也应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.