---
title: "身份鉴别 - OceanBase 数据库 V4.4.2 | OceanBase 文档中心"
description: 身份鉴别 本文介绍了 OceanBase 数据库 MySQL 模式下的身份标识与鉴别机制，包括用户鉴权、身份标识组成以及认证插件的使用。 身份标识与鉴别功能用于对登录数据库的用户进行身份验证，确认其是否能够与数据库用户进行关联，并基于关联用户的权限对数据访问活动进行安全控制。认证插件（Authentication P…
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/100.identification-and-authentication-of-mysql-mode/100.identification-of-mysql-mode.md)  

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

身份标识与鉴别功能用于对登录数据库的用户进行身份验证，确认其是否能够与数据库用户进行关联，并基于关联用户的权限对数据访问活动进行安全控制。认证插件（Authentication Plugin）则用于用户密码验证环节。

## 用户鉴权

OceanBase 数据库的用户鉴权是指客户端在尝试访问 OceanBase 服务器时提供有效的用户凭证。如果 OceanBase 服务器确认提供的凭证有效，它将允许客户端访问 OceanBase 数据库。OceanBase 数据库使用一种叫做 MySQL Authentication Protocol（MAPI）的协议来进行用户鉴权。它是基于客户端机器上的 MySQL 客户端帐户来完成身份验证的，也就是说，只有拥有正确用户名和密码的客户端才可以连接到 OceanBase 服务器。当客户端发出连接请求时，OceanBase 服务器将发送一个随机的识别码到客户端。客户端必须使用正确的用户名和密码来解码这个识别码，然后将解码的结果发送回服务器。如果结果正确，OceanBase 服务器将允许客户端连接服务器。

## 身份标识

MySQL 模式中，一个 `user` 由 `user_name` 和 `host` 共同体组成。这里直接给出一个示例：创建 3 个具有相同用户名的用户。

示例如下：

```sql
create user 'u1'@'%' identified by '*******';
create user 'u1'@'10.xxx.xxx.1' identified by '*******';
create user 'u1'@'10.xxx.xxx.2' identified by '*******';

```

其中：

- `%`：表示允许任何客户端 IP 连接该租户。
 - `10.xxx.xxx.1`：表示只允许 `10.xxx.xxx.1` 这个 IP 连接该租户。
 - `10.xxx.xxx.2`：表示只允许 `10.xxx.xxx.2` 这个 IP 连接该租户。

用户登录时，OBServer 节点会根据 `user_name`、`client_ip` 和 `password` 匹配，来控制用户登录。

## 认证插件

OceanBase 数据库在 MySQL 模式下支持通过认证插件（Authentication Plugin）来控制密码的哈希计算和验证方式。当前支持以下认证插件：

- mysql_native_password：传统的密码认证插件，使用 SHA-1 哈希算法。
 - caching_sha2_password：基于 SHA-256 的密码认证插件，具有更高的安全防护等级。该插件从 V4.4.2 BP2 版本开始支持，可通过系统变量 [default_authentication_plugin](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000006421709) 将该插件设置为创建新用户时使用的默认插件。该插件具备以下特性：

     - SHA-256 哈希算法：使用更强的 SHA-256 算法替代 SHA-1，并且在生成哈希值时附加随机值（Salt）。
     - 双重认证模式：支持快速认证（基于哈希缓存）和完整认证（基于存储层哈希，使用多轮 SHA-256 计算）。
     - 安全传输：支持 SSL 和 RSA 加密传输用户密码。
     - 密码缓存：服务端缓存已认证用户的哈希值，提升后续认证性能。
     - 迭代次数可调：可通过系统变量 [caching_sha2_password_digest_rounds](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000006310664) 控制存储层哈希的 SHA-256 迭代次数（默认 5000）。
 - 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`、`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 及以上版本 |

### 示例

在创建或修改用户时，可以通过 `IDENTIFIED WITH auth_plugin` 语法指定认证插件。如果未通过 `default_authentication_plugin` 变量指定，默认使用 `mysql_native_password`。

- 创建用户 `user1`，指定使用 `caching_sha2_password` 认证插件（V4.4.2 BP2 起支持）。

  ```shell
  obclient> CREATE USER user1 IDENTIFIED WITH caching_sha2_password BY '*******';

  ```
 - 创建用户 `user2`，指定使用 `mysql_native_password` 认证插件。

  ```shell
  obclient> CREATE USER user2 IDENTIFIED WITH mysql_native_password BY '*******';

  ```
 - 修改用户 `user2` 的认证插件。

  ```shell
  obclient> ALTER USER 'u1'@'%' 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 user, plugin, authentication_string FROM mysql.user WHERE user LIKE 'user_%';

  ```

## 相关文档

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

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