找出真凶:谁在连接我的数据库?

找出真凶:谁在连接我的数据库?

qunyingliu

2014.10.31

背景:

数据库迁移需要梳理数据库认证信息,业务的数据库配置信息比较松散,已知的已经修改但是总有一些落单的。

怎么找出真凶?

1.登录数据库服务器查看连接数据库的网络链接:

ssh

netstat -ntp|grep “数据库IP:数据库端口”

查看数据库服务器上已经建立的连接,如下图所示:

tcp0010.1.1.85:330610.2.1.33:3610ESTABLISHED13025/mysqld

针对不能查看机器网络连接的,可通过mysql—->show processlist来确定来源IP与端口号:

mysql>showprocesslist;+———–+————+———————-+——+————-+———-+—————————————————————-+——————————————————————————————————+|Id|User|Host|db|Command|Time|State|Info|+———–+————+———————-+——+————-+———-+—————————————————————-+——————————————————————————————————+|204883537|hehe|10.2.1.33:3610|NULL|select*froma.table|13428752|sleep|NULL

2.登录与数据库建立连接的业务服务器,如10.2.1.33

通过网络连接状态查看:

tcp0010.2.1.33:361010.1.1.85:3306ESTABLISHED709/Datasend

一般情况下,通过网络连接状况就可以看到对应的进程ID与进程名,如PID为709,进程名为Datasend(随意起的一个名字)。

但是有的时候也会碰到以下这种情况:

tcp0010.2.1.33:361010.1.1.85:3306ESTABLISHED—–

进程ID与进程名的地方被一个横线或者一组横线替代,那么该怎么办呢?

3.通过lsof -i:端口号,如lsof -i:3610 可以查看业务机器上该端口号对应的进程ID和进程名。

myhost#lsof-i:3610COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEDatasend709root3uIPv416007698330t0TCP10.2.1.33:3610->mydbhost:mysql(ESTABLISHED)

PID和COMMAND都找到了,如果还不清楚是哪个进程,通过ll /proc/${PID}/exe

就可以找到对应的程序了。

这下子,对应的机器IP,端口号,进程,程序地址,都找到了,可以找事主聊聊天喝喝茶了。

本文出自 “运维者说:从菜鸟到老鸟” 博客,,请务必保留此出处

无论何时何地,只要创造就有收获,只有不息的奋进,才能证明生命的存在。

找出真凶:谁在连接我的数据库?

相关文章:

你感兴趣的文章:

标签云: