首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 參數詳解:max_connect_errors 防暴力破解配置指南

     編輯:MySQL 綜合教學

MySQL 參數詳解:max_connect_errors 防暴力破解配置指南

max_connect_errors 是 MySQL 安全計數器,用於阻止連續失敗的客戶端連接,防禦密碼暴力破解。與性能調優無直接關係。

參數格式與默認值

max_connect_errors = 10  -- 默認值(若 my.cnf 無配置則為 10)

修改方法

  1. 編輯 /etc/my.cnf(CentOS/Debian 典型路徑)
  2. 在 [mysqld] 區段添加/修改:max_connect_errors = 6000
  3. 重啟 MySQL 生效:systemctl restart mysqld

工作機制

  • 某客戶端連續失敗達到設定次數(如密碼錯誤 6000 次),MySQL 永久封禁該 Host 後續連接。
  • 封禁後報錯:ERROR 1129 (HY000): Host 'xxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
  • 解封方式: (1) 重啟 MySQL (2) 執行 FLUSH HOSTS; (3) mysqladmin flush-hosts
  • 該客戶端一次成功連接即重置計數器歸零。

配置建議

最佳實踐:層層設防

  1. 網絡層: 安全組/防火牆僅放行應用服務器 IP 訪問 3306。
  2. MySQL 層: bind-address=127.0.0.1 或內網 IP,skip-networking 禁用 TCP。
  3. 賬號層: 最小權限、強密碼、禁用 root 遠程、定期輪換。
  4. 參數層: 設定 max_connect_errors、wait_timeout、max_user_connections。
  5. 審計層: 開啟審計日誌、慢查詢日誌、異常登入告警。

16GB 內存機器參考配置

max_connect_errors = 6000
# 設置每個主機的連接請求異常中斷的最大次數,當超過該次數,MYSQL服務器將禁止host的連接請求,直到mysql服務器重啟或通過flush hosts命令清空此host的相關信息。

提醒: 過小值導致正常業務誤封,過大值失去防護意義。結合業務重試策略、監控告警動態平衡。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景建議值理由
內網可信環境、應用自帶重試1000-5000避免誤封正常應用(網絡抖動、部署重啟)
公網暴露、高風險100-500快速封禁攻擊源
僅本地 Socket 連接可極大或關閉網絡監聽根絕網絡攻擊面