宿主机无法连接docker的mysql

来源:3-3 Ubuntu中通过Docker安装配置MySQL主从节点

成龙哥哥

2019-05-19

ubuntu lts 18
Docker 版本 18.09.6
mysql 版本 5.7
宿主机无法连接docker的mysql,
但是 docker exec 进容器,可以连接

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

运行的容器信息

$ docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
9d6f70df3a04        mysql:5.7           "docker-entrypoint.s…"   32 minutes ago      Up 32 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp   modest_hawking

尝试在宿主机连接

mysql -P 3306 -u root
#输入密码一直卡在这里
mysql -h 127.0.0.1 -P 3306 -u root -p
Enter password: 
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2

宿主机的ip

inet 172.16.133.130  netmask 255.255.255.0  broadcast 172.16.133.255

尝试在宿主机连接

mysql -P 3306 -u root
#输入密码一直卡在这里
mysql -h 172.16.133.130 -P 3306 -u root -p
Enter password: 
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2

容器内部

select user,host,plugin,authentication_string from mysql.user;
+---------------+-----------+-----------------------+-------------------------------------------+
| user          | host      | plugin                | authentication_string                     |
+---------------+-----------+-----------------------+-------------------------------------------+
| root          | localhost | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| mysql.session | localhost | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | localhost | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| root          | %         | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+---------------+-----------+-----------------------+-------------------------------------------+
4 rows in set (0.00 sec)
写回答

1回答

xiaomo

2019-05-19

同学你好,可以尝试检查一下:

  1. 确认root有没开启远程登录的权限。先把这个远程登录打开试试看(不过看起来貌似已经放开了);

  2. 看下my.cnf有没skip-name-resolve这个配置,打开或关闭看看效果;

  3. 看下my.cnf的是否有:bind-address=127.0.0.1, 有的话可以改成0.0.0.0

    重启mysql再看看。

0
9
xiaomo
回复
成龙哥哥
涨姿势了,感谢分享!
2019-05-20
共9条回复

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程