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,端口号,进程,程序地址,都找到了,可以找事主聊聊天喝喝茶了。
时间: 2024-10-21 01:35:09