记一次有意思的MySQL问题排查过程

记一次有意思的MySQL问题排查过程

引言

回顾一下问题产生的背景:这几天我准备学习一下Django,遇到了要连MySQL,发现只支持8以上的版本,而我服务器MySQL版本是5.7,于是要升级,在我lsof看数据库的时候发现有一个陌生的IP在跟我的数据库建立连接(ESTABLISHED)

在这里插入图片描述

一、问题排查

我很好奇,没见过这个IP啊,此时心中最先想到的是:难道被攻击了?因为之前我的数据库密码是123456,导致数据库被人清空了。然后我去访问这个IP,发现能进去,是一个叫H3C的后台管理登录页,我又去搜H3C,是一家做路由器交换机的公司,这个时候我以为是人家公司来测试我的服务器?(想的比较天真),然后我又进到数据库里看information_schema.processlist表发现那个IP连接的持续时间跟我本地Navicat的连接时间差不多,这时有我点怀疑是不是路由器的问题,但是没往深处想,先考虑解决的办法。

在这里插入图片描述

二、尝试解决

如何解决,我最先想到的是要不换个数据库的端口?说干就干,网上找了个教程,不一会换好了。再看连接的状态只有我自己的IP,但是!过了一会,刚才那个陌生的IP又出现了,这时候人已经有点麻了。但是问题还没解决,还得接着干。

我又尝试新的办法,限制IP访问,添加白名单。首先查看了本地Windows的IP,然后设置为白名单,只添加了这一个IP,其他的都删了。设置好了,刷新生效。这时候再用Windows上的Navicat连接,您猜怎么着?报错183.xx.xx.xx not allowed connect to ...

在这里插入图片描述

好家伙,这个IP不就是我最开始发现连我数据库的陌生IP吗。又回到了最开始的地方。这时候我几乎肯定就是路由器的问题了,但是现在我在服务器上都不能进数据库了,因为之前限制IP的时候localhost也删了……(后面打算重装吧)

三、水落石出

又回到了那个路由器的问题,我重新访问了那个IP,网上搜了一下H3C的后台管理系统的密码,一下就进入了后台,果然,在基本信息页面我看到了自己的IP,也就是路由器分给我的内网IP。

在这里插入图片描述

四、底层原理

问题:“为什么Navicat连接数据库用的是路由器的IP而不是本地电脑的IP?”

这个问题我一开始以为是Navicat的底层实现就是这样的,我去翻了他的官方文档,并没有对于这方面的解释,看着看着看到了一篇的关于外网和内网的帖子,到这里终于明白了。

这个背后其实就是外网IP和内网IP的问题。

外网IP:

​ 类比学校,校园网的主IP就是外网IP,是运营商分出来的,在校园内所有连接校园网的用户都相当于的是外网IP的内网用户。

内网IP:

​ 就是学校内连接了校园网的用户会有自己的IP,这个IP是校园网外网IP分给你的,只属于你自己这台设备。

从访问过程上来看,外网IP可以被外界访问,内网IP不能被外界访问。个人用户的IP其实都是内网IP(个人如果用外网IP就太浪费了),通常我们在访问外网的时候都是通过路由器或者交换机来访问外网,Navicat连接服务器应该也是这个道理,用的是路由器来访问我阿里云的公网IP。

五、总结

整个过程大概花了一天的时间,感觉很充实,再次感受到自己知识的匮乏,趁着没毕业多学点吧。

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Philo Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值