基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
身份鉴别
更新时间:2026-09-09 10:31:44
本文介绍了 OceanBase 数据库 Oracle 模式下的身份标识与鉴别机制,包括用户鉴权、身份标识组成以及认证插件的使用。
身份标识与鉴别功能用于对登录数据库的用户进行身份验证,确认其是否能够与数据库用户进行关联,并基于关联用户的权限对数据访问活动进行安全控制。认证插件(Authentication Plugin)则用于用户密码验证环节。在 Oracle 模式下,OceanBase 数据库支持通过认证插件来控制密码的哈希计算和验证方式。
功能适用性
本文档仅适用于 OceanBase 数据库 Oracle 模式。目前 OceanBase 数据库社区版仅提供了 MySQL 模式,有关 MySQL 模式下的身份鉴别,参见 身份鉴别。
用户鉴权
Oracle 模式下,OceanBase 用户鉴权是指为 OceanBase 用户名和密码鉴定,以便识别用户的身份以及用户的所能访问的功能、资源等。在 OceanBase 数据库中,所有的用户都需要使用正确的用户名和密码来登录,以此来保护数据库的安全。
身份标识
Oracle 模式中,用户名称在租户内是唯一的,不同租户的用户可以同名,所以通过 用户名@租户名 的形式在系统全局唯一确定一个用户。这里直接给出一个示例:
使用
SYS用户登录集群的 Oracle 租户。obclient -usys@oracle -h10.xxx.xxx.1 - P2881 -P*******执行以下命令,创建用户
u1。obclient> CREATE USER u1 IDENTIFIED BY ******; Query OK, 0 rows affected (0.064 sec)执行以下命令,授予用户
u1连接数据库的权限。obclient>GRANT CREATE SESSION TO u1; Query OK, 0 rows affected (0.045 sec)使用
u1用户登录集群。$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 实现。
- 创建用户时,不指定认证插件的情况下默认使用
ob_sm3_password:该插件在认证协议与状态机上完全复用
caching_sha2_password(AuthSwitch、快速认证/完整认证、TLS/RSA 传密),但算法与元数据保持独立。该插件具备以下特性:- SM3 哈希算法(GB/T 32905-2016):替代 SHA-256,用于密码存储与认证校验。
- 双重认证模式:快速认证(内存缓存)+ 完整认证(磁盘存储串 + SSL/RSA 传密)。
- 迭代次数可调:可通过系统变量 ob_sm3_password_digest_rounds 控制
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)。obclient> CREATE USER user1 IDENTIFIED BY "******";创建用户
user2,显式指定使用caching_sha2_password。obclient> CREATE USER user2 IDENTIFIED WITH caching_sha2_password BY "******";修改用户
user1的认证插件为caching_sha2_password。obclient> ALTER USER user1 IDENTIFIED WITH caching_sha2_password BY "******";创建用户
sm3_user,显式指定使用ob_sm3_password。obclient> CREATE USER sm3_user IDENTIFIED WITH ob_sm3_password BY "******";查看用户的认证插件信息。
obclient> SELECT username, plugin FROM dba_users WHERE username LIKE '%USER%';
相关文档
更多有关 IDENTIFIED WITH 语法的详细介绍,请参见 CREATE USER。