登录失败处理
对于多次登录失败的用户,seekdb 会锁定该用户,以便防止恶意 的密码攻击,从而保护数据库,提升数据库的安全性。
登录失败处理策略
seekdb 通过配置项 connection_control_failed_connections_threshold 来控制用户错误登录尝试的阈值,当用户连续错误登录次数超过该配置项定义的值之后,系统会对账户进行锁定。
connection_control_failed_connections_threshold 配置项用于指定用户错误登录尝试的阈值,默认值为 0,取值范围为 [0,2147483647]。 其中:
-
当取值为
0时,表示关闭该功能,即不对用户的错误登录尝试进行处理。 -
当取值为非
0值时,待用户错误登录次数超过指定的值后,系统会对账户进行锁定,具体锁定时间通过以下公式来计算:MIN(MAX((current_failed_login_num + 1 - connection_control_failed_connections_threshold) * 1000, connection_control_min_connection_delay), connection_control_max_connection_delay)其中:
-
current_failed_login_num表示用户当前连续错误登录的次数,且current_failed_login_num大于或等于connection_control_failed_connections_threshold。 -
配置项
connection_control_min_connection_delay用于指定超过连续错误登录次数阈值之后锁定时长的最小值,取值范围为 [1000,2147483647],默认值为1000,单位为毫秒。关于配置项
connection_control_min_connection_delay的更多信息,参见 connection_control_min_connection_delay。 -
配置项
connection_control_max_connection_delay用于指定超过连续错误登录次数阈值之后锁定时长的最大值,取值范围为 [1000,2147483647],默认值为2147483647,单位为毫秒。关于配置项
connection_control_max_connection_delay的更多信息,参见 connection_control_max_connection_delay。
-
配置示例
-
使用
root用户登录到 seekdb。mysql -h127.0.0.1 -uroot -P2881 -
执行以下语句,设置用户的错误登录次数为 5 次。指定了超过错误登录次数之后,错误登录锁定的最小时长为 60000 毫秒,错误登录锁定的最大时长为 360000 毫秒。
示例如下:
ALTER SYSTEM SET connection_control_failed_connections_threshold=5;
ALTER SYSTEM SET connection_control_min_connection_delay=60000;
ALTER SYSTEM SET connection_control_max_connection_delay=360000;配置项相关的详细设置及说明请参见 修改配置项。
-
创建登录用户。
CREATE USER 'test' IDENTIFIED BY '*******';Query OK, 0 rows affected (0.04 sec) -
验证登录失败处理策略是否生效。
当连续输入 5 次错误密码时,用户会被锁定。
mysql -h127.0.0.1 -uroot -P2881 -p*******;
ERROR 5039 (01007): User locked使用
root用户登录到 seekdb,查看失败登录信息。SELECT * FROM information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;+-------------+-----------------+
| USERHOST | FAILED_ATTEMPTS |
+-------------+-----------------+
| 'test'@'%' | 5 |
+-------------+-----------------+
1 row in set (0.005 sec) -
执行以下 SQL 语句,解锁用户。
ALTER USER test ACCOUNT UNLOCK;Query OK, 0 rows affected (0.03 sec)