不知道是那个用户,那个ip连接数据被拒绝,但是我们可以通过分析数据包得到这些信息。先说一下mysql拒绝连接有几种情况:
1)用户对访问的数据库没有权限。2)用户密码输错。3)数据包损坏。4)连接超时 超过了connect_timeout
1、 如果mysql一直有拒绝连接的现象直接抓包就可以了,对于偶尔有Aborted_connects现象就需要分析一下是否有规律,找到规律再抓包。
这个是分析规律的小程序。如果没规律的,可以一边用脚本观察Aborted_connects有增加时,就开始抓包。
- #!/bin/bash
- for i in `seq 10000`
- do
- echo `date +"%Y-%m-%d %H:%M"` >> log1
- /usr/local/mysql/bin/mysql -uroot -p'xxxx' -e 'show global status like "Aborted_connects"' >> log1
- echo "" >> log1
- sleep 1
- done
tcpdump -i eth1 port 3306 -w snap.log
3、分析数据包,
1) 用wireshark打开snap.log
2) CTRL+f搜索关键字Error,选择String。
3) 找到报错数据包以后,打开Mysql protocol 就可以找到,是那个用户,那个ip连接数据库被拒绝。
小结:抓包还可以分析出,sql语句写的不正确,例如字段名写错了,应用层的错误。