首页 > 代码库 > 找出真凶:谁在连接我的数据库?
找出真凶:谁在连接我的数据库?
找出真凶:谁在连接我的数据库?
qunyingliu
2014.10.31
背景:
数据库迁移需要梳理数据库认证信息,业务的数据库配置信息比较松散,已知的已经修改但是总有一些落单的。
怎么找出真凶?
1.登录数据库服务器查看连接数据库的网络链接:
ssh 10.1.1.85
netstat -ntp|grep “数据库IP:数据库端口”
查看数据库服务器上已经建立的连接,如下图所示:
tcp 0 0 10.1.1.85:3306 10.2.1.33:3610 ESTABLISHED 13025/mysqld
针对不能查看机器网络连接的,可通过mysql---->show processlist来确定来源IP与端口号:
mysql> show processlist; +-----------+------------+----------------------+------+-------------+----------+----------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----------+------------+----------------------+------+-------------+----------+----------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ | 204883537 | hehe | 10.2.1.33:3610 | NULL | select * from a.table | 13428752 |sleep| NULL
2.登录与数据库建立连接的业务服务器,如10.2.1.33
通过网络连接状态查看:
tcp 0 0 10.2.1.33:3610 10.1.1.85:3306 ESTABLISHED 709/Datasend
一般情况下,通过网络连接状况就可以看到对应的进程ID与进程名,如PID为709,进程名为Datasend(随意起的一个名字)。
但是有的时候也会碰到以下这种情况:
tcp 0 0 10.2.1.33:3610 10.1.1.85:3306 ESTABLISHED -----
进程ID与进程名的地方被一个横线或者一组横线替代,那么该怎么办呢?
3.通过lsof -i:端口号,如 lsof -i:3610 可以查看业务机器上该端口号对应的进程ID和进程名。
myhost # lsof -i:3610COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEDatasend 709 root 3u IPv4 1600769833 0t0 TCP 10.2.1.33:3610->mydbhost:mysql (ESTABLISHED)
PID和COMMAND都找到了,如果还不清楚是哪个进程,通过ll /proc/${PID}/exe
就可以找到对应的程序了。
这下子,对应的机器IP,端口号,进程,程序地址,都找到了,可以找事主聊聊天喝喝茶了。
本文出自 “运维者说:从菜鸟到老鸟” 博客,请务必保留此出处http://liuqunying.blog.51cto.com/3984207/1570529
找出真凶:谁在连接我的数据库?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。