问题
使用 Docker 安装了 MySQL 之后,从其他机器连接提示连接被拒绝。
排查了各种可能的原因:
- 确认本机 IP 无误,
/etc/hosts配置无误。 - 确认 ufw 已经放开连接端口。
- 确认 frp 的配置不会影响 MySQL 的连接。
- 确认要暴露的 MySQL 连接端口已在监听,且 IPv4 和 IPv6 都能监听。
问了 AI,排查了很长时间,没有明白问题出在哪里。
原因
为了对比,用 3306 默认端口启动了一个新容器,ufw 放开 3306 端口连接正常,说明还是端口有问题。
最后排查到是端口映射搞乱了。
在启动 Docker 容器的时候端口映射配置为 25040:3306。
在 mysql/conf/my.conf 配置文件中的又配置了 MySQL 的端口:
1 | [mysqld] |
其实容器内的 MySQL 是从 25040 端口启动的,Docker 的端口却映射到了 3306,所以导致一直连接不上。
最后将启动 Docker 容器的端口映射改为 25040:25040 重新启动容器,连接正常。