---
title: "登录失败处理 - OceanBase 数据库 V4.2.0 | OceanBase 文档中心"
description: 登录失败处理 OceanBase 数据库会锁定多次登录失败的用户，主要目的在于防止恶意的密码攻击，保护数据库，提升数据库的安全性。 OceanBase 数据库的 Oracle 模式利用 User Profile 实现用户锁定功能。 功能适用性 本文档仅适用于 OceanBase 数据库 Oracle 模式。目前 Oc…
---
切换语言

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

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

# 登录失败处理

更新时间：2026-02-12 15:03:20

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

OceanBase 数据库会锁定多次登录失败的用户，主要目的在于防止恶意的密码攻击，保护数据库，提升数据库的安全性。

OceanBase 数据库的 Oracle 模式利用 User Profile 实现用户锁定功能。

#### 功能适用性

本文档仅适用于 OceanBase 数据库 Oracle 模式。目前 OceanBase 数据库社区版仅提供了 MySQL 模式，有关 MySQL 模式下的登录失败处理，参见 [登录失败处理](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000033847) 。

## 概念介绍

Profile 文件是限制数据库用户使用的资源的一种手段。在 OceanBase 数据库的 Oracle 模式中，Profile 文件主要用来控制用户的登录验证策略。通过使用用户的 Profile 文件，可以实现用户的锁定功能。

Profile 文件对密码提供了两个参数来实现连续登录失败后锁定用户：

- failed_login_attempts：连续登录失败的次数。
 - password_lock_time：锁定时间，单位为天。

用户被锁定后，其锁定和解锁策略如下：

- 用户锁定：每次因密码不正确登录失败，如果检查失败次数达到阈值，则触发锁定用户。
 - 用户解锁：如果登录用户被锁定，再次登录时，系统会检查锁定时间，如果锁定时间已达到，系统会进行解锁，然后重新尝试登录。如果锁定时间未到，系统会报错，您也可以利用 SQL 语句解锁用户。

## 实现方式

管理员可以通过创建 Profile 并将其应用给用户的方式来实现用户密码的失败处理。主要包含以下两步：

1. 创建 Profile。

   您可以通过 `CREATE PROFILE` 语句创建 Profile，并指定用户连续登录失败的次数及对应的锁定时间。

   SQL 语句如下：

   ```sql
   CREATE PROFILE "profile_name" LIMIT
     { FAILED_LOGIN_ATTEMPTS
       | PASSWORD_LOCK_TIME
       | PASSWORD_LIFE_TIME
       | PASSWORD_GRACE_TIME
       }
       { integer | UNLIMITED | DEFAULT };

   ```

   语句说明：

      - 执行该语句需要具备 `CREATE PROFILE` 权限。
      - `FAILED_LOGIN_ATTEMPTS`：用于指定连续登录用户帐户失败的次数。

       如果不指定该参数，则默认使用 `DEFAULT` Profile 的限制，默认 `DEFAULT` Profile 中该参数的值为 `UNLIMITED`，表示连续登录用户帐户失败的次数无限制。
      - `PASSWORD_LOCK_TIME`：当连续登录失败次数达到阈值后，用于指定用户帐户被锁定的天数。

       如果不指定该参数，则默认使用 `DEFAULT` Profile 的限制，默认 `DEFAULT` Profile 中该参数的值为 `UNLIMITED`，表示不限制用户锁定的天数。
      - `PASSWORD_LIFE_TIME`：用于指定同一密码可用于身份验证的有效天数。

       如果不指定该参数，则默认使用 `DEFAULT` Profile 的限制，默认 `DEFAULT` Profile 中该参数的值为 `UNLIMITED`，表示不限制同一密码可用于身份验证的天数。
      - `PASSWORD_GRACE_TIME`：当达到身份验证的有效天数后，系统会发出警告，该参数用于指定发出警告后仍允许用户账户登录的宽限期天数。

       如果不指定该参数，则默认使用 `DEFAULT` Profile 的限制，默认 `DEFAULT` Profile 中该参数的值为 `UNLIMITED`，表示不限制用户登录的天数。
      - `integer | UNLIMITED | DEFAULT`：用于指定参数值的取值范围，其中：

            - `integer` 表示整数。
            - `UNLIMITED` 表示没有为该参数设置限制。
            - `DEFAULT` 表示使用 `DEFAULT` Profile 的限制。

   更多 `CREATE PROFILE` 语句的详细信息，参见 [CREATE PROFILE](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000036770)。
 2. 应用 Profile 至用户。

   应用 Profile 至用户主要有以下两种场景：

      - 在创建用户时，直接指定已创建的 Profile 文件。

       SQL 语句如下：

       ```shell
       obclient> CREATE USER user_name IDENTIFIED BY password PROFILE
       {"profile_name" | default};

       ```

       如果在创建用户时未指定 Profile，则默认使用 `DEFAULT` Profile。`DEFAULT` Profile 的配置可以通过系统视图 `DBA_PROFILES` 查看。

       更多 `CREATE USER` 语句的详细信息，参见 [CREATE USER](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000036774) 。
      - 如果用户已创建，则可以通过修改用户的 Profile 文件将已创建的 Profile 文件应用至用户。

       SQL 语句如下：

       ```shell
       obclient> ALTER USER user_name PROFILE {"profile_name" | default};

       ```

       更多 `ALTER USER` 语句的详细信息，参见 [ALTER USER](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000036788) 。

## 操作示例

1. 使用 sys 用户登录集群的 Oracle 租户。

   ```shell
   obclient -usys@oracle -h127.1 -P2881 -  P*******

   ```
 2. 创建 Profile 并设置连续错误登录策略。

   创建名为 `userprof1` 的 Profile，连续错误登录 5 次即锁定一天。

   ```shell
   obclient> CREATE PROFILE "userprof1" LIMIT FAILED_LOGIN_ATTEMPTS 5
   PASSWORD_LOCK_TIME 1;

   ```
 3. 完成后，可以执行以下语句，确认设置是否成功。

   ```shell
   obclient> SELECT * FROM DBA_PROFILES;
   +-----------+--------------------------+---------------+-------------+
   | PROFILE   | RESOURCE_NAME            | RESOURCE_TYPE | LIMIT       |
   +-----------+--------------------------+---------------+-------------+
   | DEFAULT   | FAILED_LOGIN_ATTEMPTS    | PASSWORD      | UNLIMITED   |
   | DEFAULT   | PASSWORD_GRACE_TIME      | PASSWORD      | UNLIMITED   |
   | DEFAULT   | PASSWORD_LIFE_TIME       | PASSWORD      | UNLIMITED   |
   | DEFAULT   | PASSWORD_LOCK_TIME       | PASSWORD      | 86400000000 |
   | DEFAULT   | PASSWORD_VERIFY_FUNCTION | PASSWORD      | NULL        |
   | userprof1 | FAILED_LOGIN_ATTEMPTS    | PASSWORD      | 5           |
   | userprof1 | PASSWORD_GRACE_TIME      | PASSWORD      | DEFAULT     |
   | userprof1 | PASSWORD_LIFE_TIME       | PASSWORD      | DEFAULT     |
   | userprof1 | PASSWORD_LOCK_TIME       | PASSWORD      | 86400000000 |
   | userprof1 | PASSWORD_VERIFY_FUNCTION | PASSWORD      | DEFAULT     |
   +-----------+--------------------------+---------------+-------------+
   10 rows in set

   ```
 4. 创建用户，并指定 Profile。

   ```shell
   obclient> CREATE USER secuser IDENTIFIED BY ****** PROFILE "userprof1";

   obclient> GRANT all privileges ON *.* to secuser;

   ```
 5. 验证设置结果。

   当连续输入 5 次错误密码时，用户会被锁定一天。

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

   ```

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

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

   ```
 6. 解锁用户。

   #### 注意

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

   ```shell
   obclient> ALTER USER secuser ACCOUNT UNLOCK;

   ```

## 修改登录失败处理策略

对于已经创建好的 Profile 可以通过 `ALTER PROFILE` 语句进行修改。

更多 `ALTER PROFILE` 语句的详细信息，参见 [ALTER PROFILE](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000036802)。

#### 注意

对于已经被锁定的用户无法通过 `ALTER PROFILE` 语句修改 `FAILED_LOGIN_ATTEMPTS` 的方式来进行解锁。对带有 `ALTER PROFILE` 语句的配置文件所做的更改仅影响其后续会话中的用户，而不影响其当前会话中的用户。

  上一篇 下一篇 ![有帮助](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) 咨询热线
