Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2354561
  • 博文数量: 276
  • 博客积分: 5998
  • 博客等级: 大校
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-24 14:43
文章分类

全部博文(276)

文章存档

2014年(25)

2013年(11)

2012年(69)

2011年(167)

2010年(4)

分类: Mysql/postgreSQL

2013-07-10 11:03:33

     监控发现mysql Aborted_connects数值一直增加,也就说mysql有拒绝连接请求的现象。从数据库层次来看,没有相关报警日志,
不知道是那个用户,那个ip连接数据被拒绝,但是我们可以通过分析数据包得到这些信息。先说一下mysql拒绝连接有几种情况
1)用户对访问的数据库没有权限。2)用户密码输错。3)数据包损坏。4)连接超时 超过了connect_timeout   

 1、 如果mysql一直有拒绝连接的现象直接抓包就可以了,对于偶尔有Aborted_connects现象就需要分析一下是否有规律,找到规律再抓包。
这个是分析规律的小程序。如果没规律的,可以一边用脚本观察Aborted_connects有增加时,就开始抓包。

  1. #!/bin/bash
  2. for i in `seq 10000`
  3. do
  4.         echo `date +"%Y-%m-%d %H:%M"` >> log1
  5.         /usr/local/mysql/bin/mysql -uroot -p'xxxx' -e 'show global status like "Aborted_connects"' >> log1
  6.         echo "" >> log1
  7.         sleep 1
  8. done
2、 抓包 -i 指定访问数据库走的网卡,port是数据库的端口,抓包数据会记录到snap.log中
tcpdump -i eth1  port 3306  -w snap.log

3、分析数据包,
1) 用wireshark打开snap.log



2) CTRL+f搜索关键字Error,选择String。


3) 找到报错数据包以后,打开Mysql 
protocol 就可以找到,是那个用户,那个ip连接数据库被拒绝


小结:抓包还可以分析出,sql语句写的不正确,例如字段名写错了,应用层的错误。

阅读(8107) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~