---
title: "身份鉴别 - OceanBase 数据库 V4.4.2 | OceanBase 文档中心"
description: 身份鉴别 本文介绍了 OceanBase 数据库 Oracle 模式下的身份标识与鉴别机制，包括用户鉴权、身份标识组成以及认证插件的使用。 身份标识与鉴别功能用于对登录数据库的用户进行身份验证，确认其是否能够与数据库用户进行关联，并基于关联用户的权限对数据访问活动进行安全控制。认证插件（Authentication …
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

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

# 身份鉴别

更新时间：2026-09-09 10:31:44

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

本文介绍了 OceanBase 数据库 Oracle 模式下的身份标识与鉴别机制，包括用户鉴权、身份标识组成以及认证插件的使用。

身份标识与鉴别功能用于对登录数据库的用户进行身份验证，确认其是否能够与数据库用户进行关联，并基于关联用户的权限对数据访问活动进行安全控制。认证插件（Authentication Plugin）则用于用户密码验证环节。在 Oracle 模式下，OceanBase 数据库支持通过认证插件来控制密码的哈希计算和验证方式。

#### 功能适用性

本文档仅适用于 OceanBase 数据库 Oracle 模式。目前 OceanBase 数据库社区版仅提供了 MySQL 模式，有关 MySQL 模式下的身份鉴别，参见 [身份鉴别](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005283304)。

## 用户鉴权

Oracle 模式下，OceanBase 用户鉴权是指为 OceanBase 用户名和密码鉴定，以便识别用户的身份以及用户的所能访问的功能、资源等。在 OceanBase 数据库中，所有的用户都需要使用正确的用户名和密码来登录，以此来保护数据库的安全。

## 身份标识

Oracle 模式中，用户名称在租户内是唯一的，不同租户的用户可以同名，所以通过 `用户名@租户名` 的形式在系统全局唯一确定一个用户。这里直接给出一个示例：

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

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

   ```
 2. 执行以下命令，创建用户 `u1`。

   ```shell
   obclient> CREATE USER u1 IDENTIFIED BY ******;
   Query OK, 0 rows affected (0.064 sec)

   ```
 3. 执行以下命令，授予用户 `u1` 连接数据库的权限。

   ```shell
   obclient>GRANT CREATE SESSION TO u1;
   Query OK, 0 rows affected (0.045 sec)

   ```
 4. 使用 `u1` 用户登录集群。

   ```shell
   $obclient -h10.xxx.xxx.1 -P2881 -uu1@oracle001 -p****** -A
   Welcome to the OceanBase.  Commands end with ; or \g.
   Your OceanBase connection id is 3221707914
   Server version: OceanBase 4.0.0.0 (r101000022022120716-0d7927892ad6d830e28437af099f018b0ad9a322) (Built Dec  7 2022 16:22:15)

   Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

   obclient [U1]>

   ```

## 认证插件

#### 注意

OceanBase 数据库在 Oracle 模式下从 V4.4.2 BP2 版本开始支持密码认证插件机制。

- 用户可以在创建或修改用户时显式指定使用 `caching_sha2_password` 认证插件（基于 SHA-256 算法），具有更高的安全防护等级。

     - 创建用户时，不指定认证插件的情况下默认使用 `ob_native_password`（等效于 `mysql_native_password`，使用 SHA-1 算法）。如需将 `caching_sha2_password` 设为默认认证插件，可通过设置系统变量 [default_authentication_plugin](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000006421709) 实现。
 - ob_sm3_password：该插件在认证协议与状态机上完全复用 `caching_sha2_password`（AuthSwitch、快速认证/完整认证、TLS/RSA 传密），但算法与元数据保持独立。该插件具备以下特性：

     - SM3 哈希算法（GB/T 32905-2016）：替代 SHA-256，用于密码存储与认证校验。
     - 双重认证模式：快速认证（内存缓存）+ 完整认证（磁盘存储串 + SSL/RSA 传密）。
     - 迭代次数可调：可通过系统变量 [ob_sm3_password_digest_rounds](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000007020851) 控制 `ob_sm3_password` 认证插件生成密码认证字符串时执行的 SM3 迭代次数（默认 5000）。  

  #### 说明

  对于 V4.4.2 版本，从 V4.4.2 BP3 版本开始支持认证插件 `ob_sm3_password`。

### 组件与驱动版本要求

使用 `caching_sha2_password` 认证插件时，数据库组件与客户端驱动需满足以下版本要求：

| 组件/驱动 | 版本要求 |
| --- | --- |
| OceanBase 数据库代理（ODP） | V4.4.0 及以上版本 |
| OBClient | V2.2.13 及以上版本 |
| OB-JDBC | V2.4.18 及以上版本 |
| OBCI | V2.1.1.3 及以上版本 |

使用 `caching_sha2_password`、`ob_sm3_password` 认证插件时，数据库组件与客户端驱动需满足以下版本要求：

| **组件/驱动** | **caching_sha2_password** | **ob_sm3_password** |
| --- | --- | --- |
| OceanBase 数据库代理（ODP） | V4.4.0 及以上版本 | V4.4.2.0 及以上版本 |
| OBClient | V2.2.13 及以上版本 | V2.2.14 及以上版本 |
| libobclient | V2.2.13 及以上版本 | V2.2.14 及以上版本 |
| OB-JDBC | V2.4.18 及以上版本 | V2.4.20 及以上版本 |
| OBCI | V2.1.1.4 及以上版本 | V2.1.1.4 及以上版本 |

### 示例

在创建或修改用户时，可以通过 `IDENTIFIED WITH auth_plugin` 语法指定认证插件。

- 创建用户 `user1`，不显示指定认证插件（默认使用 `ob_native_password`）。

  ```shell
  obclient> CREATE USER user1 IDENTIFIED BY "******";

  ```
 - 创建用户 `user2`，显式指定使用 `caching_sha2_password`。

  ```shell
  obclient> CREATE USER user2 IDENTIFIED WITH caching_sha2_password BY "******";

  ```
 - 修改用户 `user1` 的认证插件为 `caching_sha2_password`。

  ```shell
  obclient> ALTER USER user1 IDENTIFIED WITH caching_sha2_password BY "******";

  ```
 - 创建用户 `sm3_user`，显式指定使用 `ob_sm3_password`。

  ```shell
  obclient> CREATE USER sm3_user IDENTIFIED WITH ob_sm3_password BY "******";

  ```
 - 查看用户的认证插件信息。

  ```shell
  obclient> SELECT username, plugin FROM dba_users WHERE username LIKE '%USER%';

  ```

## 相关文档

更多有关 `IDENTIFIED WITH` 语法的详细介绍，请参见 [CREATE USER](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005287871)。

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