MySQL如何控制用戶輸錯密碼嘗試次數? 一、插件輔助 從官方MySQL5.7.17開始,提供了CONNECTION_CONTROL和CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS插件,該插件又提供了connection_control_failed_connections_threshold、connection_control_min_connection_delay、connection_control_max_connection_delay三個參數。 1、connection_control_failed_connections_threshold 該參數的含義是控制登陸失敗多少次數后開啟延遲登陸。 2、connection_control_min_connection_delay 該參數分別表示超過失敗次數后每次重新連接最小的延遲時間,延遲計算公式為(當前失敗總次數-失敗閾值)*connection_control_min_connection_delay,因此錯誤嘗試次數越多那么延遲時間也是越大。 3、connection_control_max_connection_delay 最大延遲時間,超過該值后客戶端可重新連接。 4、安裝插件后,可通過監控Connection_control_delay_generated狀態值和INFORMATION_SCHEMA下的表CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS來監控錯誤登錄嘗試次數。 二、錯誤日志監控 通過定時掃描MySQL錯誤日志來捕獲賬號密碼錯誤次數,達到某個閾值以后可在系統防火牆屏蔽對應的主機ip達到屏蔽賬號的目的(具體操作視情況而定) 如:錯誤日志會顯示2019-05-10T13:04:41.232259Z 5 [Note] Access denied for user 'dev'@'10.0.0.12' (using password: YES) 三、其他說明 1、有些同學會誤以為max_connection_errors能夠控制錯誤密碼的嘗試次數,其實該參數只能防止如telnet類的端口探測,即記錄協議握手錯誤的次數。 2、最后,在生產環境一定要關注aborted_clients和aborted_connects的狀態,發生異常必須及時關注。