mysql 宿主机没有办法访问的问题

246 天前
 peitaobest

docker 中 mysql 的服务正常 root@Temak:/# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fa56afd0a5c5 mysql:8.0.20 "docker-entrypoint.s…" 57 minutes ago Up 14 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql8 端口 3306 也没有被占用 root@Temak:/# sudo netstat -tuln | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp6 0 0 :::3306 :::* LISTEN
宿主机 root@Temak:/# telnet 127.0.0.1 3306 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 但是宿主机访问 docker 中的 mysql root@Temak:/# mysql -u root -p -h 127.0.0.1 -P 3306 Enter password: ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 docker 中 mysql 的日志: 2025-01-04T02:18:41.937188Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.20) starting as process 1 2025-01-04T02:18:41.948132Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2025-01-04T02:18:42.188458Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2025-01-04T02:18:42.302034Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060 2025-01-04T02:18:42.341277Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2025-01-04T02:18:42.342798Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. 2025-01-04T02:18:42.359459Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.20' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL. 请问大神如何解决宿主机访问 docker 中的 mysql

2017 次点击
所在节点    MySQL
4 条回复
bjfane
246 天前
docker 网络的问题, 用 host 模式,或者 ipvlan 或者 macvlan 能解决,host 模式最简单。
这种目录需要外挂的,放 docker 有点风险,常备份。
julyclyde
246 天前
1 mysql 里 localhost 和 127 是两码事
2 容器和宿主机是两台机器,不是同一台
peitaobest
246 天前
谢谢,已解决,谢谢!是的,测试环境先这么用,生产环境这样子使用的话还是有风险的。
guanzhangzhang
244 天前
找到 docker-proxy 的 3306 的 pid
xargs -0 -n1 < /proc/<pid>/cmdline
看转发到的容器 ip 地址是多少
nsenter 或者 docker exec mysql 容器看看容器 ip 是否一致

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1102450

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX