Chinaunix首页 | 论坛 | 博客
  • 博客访问: 45727
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 15
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-16 09:27
文章分类
文章存档

2016年(2)

2015年(3)

我的朋友

分类: Mysql/postgreSQL

2015-04-10 17:35:24

     监控发现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语句写的不正确,例如字段名写错了,应用层的错误。

阅读(1790) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:mysql配置文件my.cnf详解

给主人留下些什么吧!~~