docker安装mysql突然无法远程连接

docker安装mysql突然莫名其妙的无法远程连接

docker安装mysql突然无法远程访问

问题背景

大概一年前在服务器中通过docker安装mysql5.7端口映射关系是3308->3306

前期在服务器上开方了3308端口

bash 复制代码
firewall-cmd --zone=public --add-port=3308/tcp --permanent
firewall-cmd --reload   # 配置立即生效

博主用的是腾讯云服务器,在服务器安全组里也开放了3308端口

mysql也授权了远程连接

至此可在本地电脑远程连接mysql

=就这样过了一年多

发现问题

今天博主通过命令安装了宝塔,然后就发现docker安装的mysql无法连接了。。。。。。

排查问题

于是进行排查

首先看3308端口是否在腾讯云后台安全组放行

如上图,入站规则是全部放行的

再看服务器防火墙是否开放3308端口

bash 复制代码
[root@VM_0_2_centos ~]# firewall-cmd --query-port=3308/tcp
You're performing an operation over default zone ('public'),
but your connections/interfaces are in zone 'docker' (see --get-active-zones)
You most likely need to use --zone=docker option.

yes

发现3308端口也是放行的

执行telnet xx.xxx.xxx.xx 3308无法连接

至此就很莫名奇妙怎么会不通呢

很是郁闷。。。。。。

实在想不通 只好把服务器防火墙关了

再来用telnet测试3308端口居然能连上了,远程连接mysql也成功了

然后再开启服务器防火墙

再来用telnet测试3308端口结果无法连接上,远程连接mysql也失败了
至此可以断定问题一定出在防火墙上!

再来仔细看一下服务器开放端口查询返回的结果好像有点什么不一样

突然想起来以往查询端口返回的结果只有yes或者no像下面这样

那么我们再来执行一下下面的命令

bash 复制代码
[root@VM_0_2_centos ~]# firewall-cmd --query-port=3308/tcp --zone=docker
no

发现返回结果为no

到这里大致知道问题出在这了,通过翻译可以理解查询firewalld中关于TCP端口3308的状态默认是在 public 区域进行的而实际上TCP连接或接口被分配在了docker区域

通过查阅资料得知在firewalld中,不同的区域可以有不同的规则集,因此需要指定正确的区域来执行你的查询。
到此可得出docker区域的3308端口没有开放!

解决问题

执行命令放行docker区域端口

bash 复制代码
[root@VM_0_2_centos local]# firewall-cmd --zone=docker --add-port=3308/tcp --permanent
success
[root@VM_0_2_centos local]# firewall-cmd --reload
success

[root@VM_0_2_centos local]# firewall-cmd --query-port=3308/tcp --zone=docker
yes

docker区域端口放行成功后

再来用telnet测试3308端口可以连上并且远程连接mysql也成功了。

总结

复制代码
	问题出现的原因应该是安装宝塔的过程中升级了防火墙,新版本的防火墙执行的是更严格的规则导致docker安装的mysql无法远程连接。
相关推荐
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
小白男神1 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
分布式存储与RustFS1 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
kybs19911 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
玉&心1 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing1 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
赵文宇(温玉)1 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
程序猿_极客1 天前
【免费】分享一套优质的基于SSM的校园失物招领系统的设计与实现,源码+文档+视频详解(讲解)
java·mysql·ssm·课程设计·失物招领系统
guo_wen_qiang1 天前
上传本地镜像到harbor中
docker·容器·持续部署