Host XXX is blocked because of many connection errors, unblock with 'mysqladmin flush-hosts

連接MySQL失敗,除了權限問題之外,還遇到這種情況,出錯信息:Host XXX is blocked because of many connection errors, unblock with 'mysqladmin flush-hosts'。而且XXX還不是IP地址而是domain name。MySQL服務器和客戶端在同一臺測試及其上,連接的時候用的mysql -u root -h ipaddr。

查看機器的hosts配置,確實有domain name映射到本機地址,但是有變化,舊的已經注視掉,但錯誤信息顯示的host name是註釋掉的結果,應該跟緩存有關。

原因:MySQL服務器已經從某個host接收了大量中途終止的連接,於是決定終止繼續接收來自該host的連接,允許最大的連接錯誤數爲max_connect_errors,通過show variables命令可以查詢,一般爲10。

出現domain name而不是IP的原因是MySQL服務端在接收連接的時候會對客戶端作DNS resolve,結果會被mysqld緩存,如果只用IP連接,可以在啓動mysqld時加上-skip-name-resolve參數(命令行或my.cnf)。

解決方法:在另外一處地方執行mysqladmin flush-host或者登錄進mysql執行flush hosts(本機host已經不允許登錄!)。


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