使用过程中, 发现别的地址可以连接你的MySQL, 但是自己的IP怎么都连接不上是该怎么解决?
1. 确认 MySQL 容器内部是否能正常访问
进入 MySQL 容器,检查数据库服务是否正常运行:
docker exec -it gmalldocker_mysql bash
在容器内部连接 MySQL:
mysql -u root -p
输入密码后,执行以下命令检查数据库和用户权限:
SHOW DATABASES;
SELECT user, host FROM mysql.user;
确认用户 root
是否允许从 %
(所有主机)连接。如果没有 %
,执行以下命令授予权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Yao990324';
FLUSH PRIVILEGES;
退出容器:
exit
2. 测试宿主机是否能访问 MySQL
在宿主机上测试 MySQL 是否可以通过端口 Port 访问:
mysql -h 127.0.0.1 -P por -u root -p
3. 测试外网是否能访问 MySQL
从外部设备或本地电脑测试是否可以连接到 MySQL(使用外网 IP):
mysql -h <VPS外网IP> -P port -u root -p
如果失败,请检查以下问题:
VPS 的防火墙配置: 确保 3310
端口对外开放。
sudo ufw allow port/tcp
sudo ufw reload
云服务商的安全组规则: 如果你的 VPS 是云服务器(例如阿里云、AWS),需要在控制台中检查安全组规则,确保 port 端口对外开放。
4. 检查 Docker 网络配置
确保 MySQL 容器运行在正确的网络模式下。如果是 bridge
模式,默认会限制外部访问。
检查 MySQL 容器的网络模式:
docker inspect gmalldocker_mysql | grep NetworkMode
如果输出为 bridge
,可以尝试将容器网络改为 host
模式重新运行:
docker network inspect bridge
或者在启动时直接指定网络为 host
模式:
docker run -d --name mysql --network host -e MYSQL_ROOT_PASSWORD=password mysql:8.0.30
5. 检查 MySQL 日志
查看 MySQL 容器日志是否有异常:
docker logs mysql
如果日志中提示权限问题,可能是用户权限配置不正确。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容