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

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

找出真凶:谁在连接我的数据库?的相关文章

当网络遭受攻击时,如何快速找出真凶?

在多年的IDC机房维护过程中,服务器不定期的遭受各种人士的来访.来访的方式一般有两种: 1.DDOS攻击 2.利用系统漏洞植入后面程序 对于第一种情况,危害比较大,直接把入口堵死.但对服务器本身的伤害比较小.但第二种就很严重了,如果他入侵了web服务器,就可以直接访问后台数据库.一定要谨慎. 如果当遭受攻击,而你的整个防护设备中又没有入侵检测和流量分析设备.如何找出肇事者呢?这个时候使用开源的工具也可以. 方法如下: 在连接到防火墙内网口的核心交换机端口上启用SPAN(端口镜像),在目的端口上使

如何通过连接的端口找出进程

公司的缓存系统这几天出现问题,连接数超出限制的2048,导致应用不能继续工作,我们需要确定是哪一个进程的连接数较多,具体方法如下: 找出连接缓存服务器的应用系统的端口号 假设缓存服务器的端口号为11111, #netstat –an |grep 11111           查找连接缓存服务器的应用端口号 tcp     0    0  xx.xx.xx.xa.52878      xx.xx.xx.xb.11111       ESTABLISHED tcp     0     0 xx.x

Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化

9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Frist实现数据访问管理. 本例,我们模拟一个N层场景,用单独的客户端(控制台应用)来调用单独的基于REST服务的Web网站(WEB API应用) . 注意:每层使用单独的Visual Studio 解决方案, 这样更方便配置.调试和模拟一个N层应用. 假设有一个如Figure 9-3所示的旅行社和预订

03 找出性能问题

本章提要------------------------------------------------------如何找出性能问题的办法, 分而治之跟踪SQLTKPROF工具------------------------------------------------------3.1 分而治之    开发基于数据库(类似oracle)的应用程序, 当前的多层架构已经是既定事实, 一般用 MVC, 例如:部署一个web应用, 以下组件, 多数    运行在多台机器上.    客户端-反向代理

仅通过崩溃地址找出源代码的出错行

作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?--错啦!我相信我的看法是不会有人反对的--那就是,程序发生了崩溃! "该程序执行了非法操作,即将关闭.请与你的软件供应商联系.",呵呵,这句 M$ 的"名言",恐怕就是程序员最担心见到的东西了.有的时候,自己的程序在自己的机器上运行得好好的,但是到了别人的机器上就崩溃了:有时自己在编写和测试的过程中就莫名其妙地遇到了非法操作,但是却无法确定到底是源代码中的哪行引起的--是不是很痛苦呢?不要紧,本

LINUX小白重装上百次后, 最终找出一个成功方案 CentOS LAMP +wordpress+phpmyadmin 共0.84G

折腾了几天,终于找到很节省资源的安装wordpress方案. 成功搭建网站 http://www.gudianxiaoshuo.com     and   http://www.gudianbook.com 同时向大家推荐下wordpress建站利器 书画小说软件4.0版  我的网站 就是用这个软件搭建的  222本书 15000余篇文章 共用8个半钟头左右. 好了,转回正题,入手了一台LINUX VPS  进去一看 黑乎乎的DOS  立马傻眼.  更可恨的是没有提供相关资料,只能去自己找.自己

9.7数学与概率(三)——在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分

/** * 功能:在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分. * 假定正方形的上下两条边与x轴平行. */ /** * 考虑: * 线的准确含义,可能性有: * 1)由斜率和y轴截距确定: * 2)由这条边上的任意两点确定: * 3)线段,以正方形的边作为起点和终点. * * 假设:这条线的端点应该落在正方形的边上. * 思路:要将两个正方形对半分,这条线必须连接两个正方形的中心点. */ public class Square { //正方形的四条边 int lef

当cpu飙升时,找出php中可能有问题的代码行

当你发现一个平时占用cpu比较少的进程突然间占用cpu接近100%时,你如何找到导致cpu飙升的原因?我的思路是,首先找到进程正在执行的代码行,从而确定可能有问题的代码段.然后,再仔细分析有问题的代码段,从而找出原因. 如果你的程序使用的是c.c++编写,那么你可以很容易的找到正在执行的代码行.但是,程序是php编写的,如何找到可能有问题的代码行呢?这个问题就是本文要解决的问题. 背景知识: 如果你对c语言不熟悉的话,可以略过,直接看 示例演示. 大家都知道php是一个解释性语言.用户编写的ph

java程序性能优化之找出内存溢出元凶

我曾经在刚入行的时候做过一个小的swing程序,用到了java SE,swing,Thread等东东,当初经验少也没有做过严格的性能测试,布到生产环境用了一段时间后发现那个小程序有时候会抛java.lang.OutOfMemoryError异常,就是java的内存溢出.当时也上网查了不少资料,试过一些办法,代码也稍微做了些优化,但是有一个问题我始终是找不到解决的方案 - 不知为什么子窗体关闭后java的垃圾回收机制无法回收其资源,因为这个程序可能要经常开关一些子窗体,那么这些子窗体关闭后无法释放