mysql unauthenticated user connect

 今天有人反應部署項目投票系統用戶訪問十分緩慢 ,這個投票系統是基於PHP環境並採用短連接訪問數據庫mysql,查看監控數據庫PHP服務器CPU負載高,MYSQL 數據庫負載正常

mysql >show full processlist; 

發現大量 unauthenticated user 連接信息

13012 unauthenticated user x.x.x.x:2501 None Connect Reading from net

10056 unauthenticated user x.x.x.x:2805 None Connect Reading from net

10311 unauthenticated user x.x.x.x:2306 None Connect writing to net

10326  unauthenticated user x.x.x.x:2715 None Connect login

10422  unauthenticated user x.x.x.x:2811 None Connect login

 查閱網上資料,主要介紹解決方法如下:
1. 在 /etc/my.cnf  通過添加 skip-name-resolve 參數,關閉mysql的dns反查詢,mysql使用IP授權

2. 在 /etc/hosts 添加IP與主機名對應關係 ,檢查 /etc/resovle主DNS服務. 

3. 調整mysql max_connections,max_allowed_packet ,wait_timeout,interactive_timeout 參數

 

      經確認其實上面配置大部分參數生產環境都是已經配置過,出現大量unauthenticated user 信息時表明mysql沒有給這些客戶端連接請求確認憑證,也就是說mysql無法確認這些連接使用的數據庫賬號信息,在wait_timeout之內mysql一直等待這些連接完成, 通過測試 telnet  x.x.x.x 3306 觀察,在mysql數據庫也會出現一條  unauthenticated user x.x.x.x:4706 None Connect Reading from net 連接, 因此這種現象不一定就是數據庫問題 ,下面這些都有可能產生這種現象

1.如果應用安全問題出現大量數據庫探測,出現大量這種未經授權的連接

2.應用服務壓力過大出現線程異常中斷導致出現大量異常數據庫連接

3.應用服務異常,導致出現大量異常數據庫連接

4. MySQL 客戶端連接版本問題,驗證協議不兼容,尤其注意old-password驗證方式

      最後通過投票系統加入驗證碼防止刷票,減少出現非法和異常連接可能性,重啓PHP服務後CPU負載恢復正常,mysql數據庫unauthenticated user連接也沒再出現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章