前幾天,公司服務器作調整,而後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記錄 域名解析