我已使用我发现的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
[执行此操作时,将使用映射到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并且它没有冲突,那也应该可以。