---
title: github-fill
description: 登录失败处理 对于多次登录失败的用户，OceanBase 数据库会锁定该用户，以便防止恶意的密码攻击，从而保护数据库，提升数据库的安全性。 登录失败处理策略 OceanBase 数据库的 MySQL 模式通过租户级配置项 connection_control_failed_connections_threshold …
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.0

# 登录失败处理

更新时间：2023-08-01 14:14:03

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.0/zh-CN/600.manage/500.security-and-permissions/200.identification-and-authentication/100.identification-and-authentication-of-mysql-mode/300.login-failure-handling-of-mysql-mode.md)  

对于多次登录失败的用户，OceanBase 数据库会锁定该用户，以便防止恶意的密码攻击，从而保护数据库，提升数据库的安全性。

## 登录失败处理策略

OceanBase 数据库的 MySQL 模式通过租户级配置项 `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](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000035098)。
     - 配置项 `connection_control_max_connection_delay` 用于指定超过连续错误登录次数阈值之后锁定时长的最大值，取值范围为 [1000，2147483647]，默认值为 `2147483647`，单位为毫秒。

      关于配置项 `connection_control_max_connection_delay` 的更多信息，参见 [connection_control_max_connection_delay](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000035091)。

## 配置示例

1. 使用 root 用户登录到集群的 MySQL 租户。

   ```shell
   obclient -uroot@mysql -h127.1 -P2881 -p********

   ```
 2. 执行以下语句，设置用户的错误登录次数为 5 次。指定了超过错误登录次数之后，错误登录锁定的最小时长为 60000 毫秒，错误登录锁定的最大时长为 360000 毫秒。

   示例如下：

   ```shell
   obclient> ALTER SYSTEM SET connection_control_failed_connections_threshold=5;

   obclient> ALTER SYSTEM SET connection_control_min_connection_delay=60000;

   obclient> ALTER SYSTEM SET connection_control_max_connection_delay=360000;

   ```

   配置项相关的详细设置及说明请参见 [修改集群参数](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000033614)。
 3. 创建登录用户。

   ```shell
   obclient> CREATE USER 'test' IDENTIFIED BY '*******';
   Query OK, 0 rows affected (0.04 sec)

   ```
 4. 验证登录失败处理策略是否生效。 当连续输入 5 次错误密码时，用户会被锁定。

   ```shell
   obclient -h127.1 -P2881 -utest@mysql -p*******;
   obclient: [Warning] Using a password on the command line interface can be insecure.
   ERROR 5039 (01007): User locked

   ```

   使用 `root` 用户登录到数据库的 `MySQL` 租户，查看失败登录信息。

   ```shell
   obclient> SELECT * FROM information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
   +-------------+-----------------+
   | USERHOST    | FAILED_ATTEMPTS |
   +-------------+-----------------+
   | 'test'@'%' |               5 |
   +-------------+-----------------+
   1 row in set (0.005 sec)

   ```
 5. 执行以下 SQL 语句，解锁用户。

   #### 注意

   解锁用户的操作一般由管理员完成，普通用户如果需要执行锁定和解锁操作，必须具备全局的 `ALTER USER` 权限。关于查看用户权限和授权的相关操作，参见 [查看用户权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000035619) 和 [修改用户权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000035613)。

   ```shell
      obclient> ALTER USER test ACCOUNT UNLOCK;
      Query OK, 0 rows affected (0.03 sec)

   ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
