【MySQL】Host is blocked because of many connection errors

神諭丶發表於2016-04-12
【問題描述】:
應用伺服器那邊發現連不到資料庫,檢視日誌發現報錯:

  1. selectSQL get mysql connection failed, err:Error: ER_HOST_IS_BLOCKED Host 'xx.xx.xx.xx' is blocked because of many connection errors ……

【解決方案】:
讀了日誌發現該錯誤與connection errors有關,查了一下max_connect_errors引數:
  1. SELECT @@global.max_connect_errors;
  2. +-----------------------------+
  3. | @@global.max_connect_errors |
  4. +-----------------------------+
  5. | 10                          |
  6. +-----------------------------+
  7. 1 row in set (0.00 sec)
原來是10,果然太小了。
查了一下5.5文件,官方給出瞭解決方案:

However, once a host is blocked, flushing the host cache is the only way to unblock it.


在mysql中執行:
  1. mysql> FLUSH HOSTS;
執行指令
  1. mysqladmin flush-hosts
即可透過【flushing the host cache】來解鎖這個“host


然後調大連線錯誤數,避免再次發生此類問題:(為Dynamic Variable)
  1. mysql> SET @@global.max_connect_errors=100000;

最後新增/修改my.cnf,增加:

  1. max_connect_errors = 100000

後來繼續查了一下5.5的文件發現,其預設值就為10,而5.6.6以後的版本中,該預設值已經調到了100。

參考文件:
MySQL 5.5 Reference Manual / Chapter 5 MySQL Server Administration / 5.1.1 Server Option and Variable Reference


作者微信公眾號(持續更新)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-2079581/,如需轉載,請註明出處,否則將追究法律責任。

相關文章