前几天,公司服务器作调整,而后mysql就连不上了....time out 无语了,各类能想的办法都想了 ,主要是我mysql方面也不是很懂,当时只是推测是mysql这边出了,问题,具体缘由不明,而后领导出马,搞定.... mysql
以下为问题的描述及解决方案: sql
问题描述:执行mysql命令show processlist;查看进程的时候出现大量unauthenticated user,大体以下: 安全
|592|unauthenticated user|192.168.3.20:35320|NULL|Connect| |login|NULL|
|593|unauthenticated user|192.168.3.20:35321|NULL|Connect| |login|NULL|
|594|unauthenticated user|192.168.3.20:35322|NULL|Connect| |login|NULL| 服务器
缘由:
这个是官方的一个特殊设定,亦可称呼他为mysql的bug,无论连结的的方式是通过hosts或是IP的模式,
他都会对DNS作反查。mysql会尝试去反查IP->DNS,因为反查解析过慢,没法应付快速多量的查询。 网络
这个主要是由于DNS不稳定致使的。
若是作了网络隔离,MySQL处于一个相对安全的网络环境,那么开启skip-name-resolve选项将会最大程度避免这个问题。 进程
解决办法:
一:启动MySQL的时候,添加 --skip-name-resolve选项,禁止域名解析,问题解决。 ip
示例:
/usr/local/mysql-5.1.36/bin/mysqladmin -u root -p shutdown
/usr/local/mysql-5.1.36/bin/mysqld_safe --skip-name-resolve & ssl
二:在my.cnf的[mysqld]一节中增长skip-name-resolve 域名
三:在/etc/hosts文件中添加对应的host记录 域名解析