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的状态,发生异常必须及时关注。