首批通过分布式安全可靠测评,为关键业务系统打造
用户和权限概述
更新时间:2026-04-10 11:58:35
租户
OceanBase 数据库租户是一个逻辑概念,是资源分配的单位,是数据库对象管理和资源管理的基础。租户(Tenant)既是各类数据库对象的容器,又是资源(CPU 、Memory 、IO 等)的容器。OceanBase 数据库租户间的数据是完全隔离的,每个租户都相当于传统数据库的一个数据库实例。OceanBase 数据库租户分为:系统租户和普通租户。OceanBase 数据库预定义了用于管理的系统租户 (sys 租户),其兼容模式为 MySQL。普通租户又分为 Oracle 模式租户和 MySQL 模式租户,简称 Oracle 租户和 MySQL 租户。
用户
OceanBase 数据库用户分为:系统租户用户和普通租户用户。系统租户的内置系统管理员为用户 root,MySQL 租户的内置租户管理员为用户 root,Oracle 租户的内置租户管理员为用户 sys。创建用户时,如果当前会话的租户为系统租户,则新建的用户为系统租户用户,反之为普通租户用户。 无论是系统租户还是普通租户,租户管理员创建的用户只能用于本租户内登录。用户名称在租户内是唯一的,不同租户的用户可以同名,通过 用户名@租户名 的形式在系统全局唯一定位一个用户。
Oracle 模式下的管理用户
OceanBase 数据库的 Oracle 模式在数据库管理方面采用三权分立的安全管理体制,旨在构建安全性数据库。MySQL 模式暂不支持三权分立管理模式。
现实生活中,如果将所有权限赋予同一个人,就可能会有权限滥用的风险,而作为一个大型的数据库,从数据库安全角度出发,就有必要将数据库系统的权限分配给不同的用户角色来管理,并且各自偏重于不同的工作职责,使之能够互相限制和监督,从而有效保证系统的整体安全。
三权分立体制将管理员分为数据库管理员(DBA)、数据库安全管理员(SSO)和数据库审计员(AUDITOR)。
数据库管理员(DBA)
每个数据库至少需要一个数据库管理员来管理,负责安装和升级 OceanBase 数据库管理系统、配置数据库参数、创建数据库对象、分配自主访问权限、导入导出数据,以及数据库的备份和恢复。在 OceanBase 数据库的 Oracle 模式中为内置的 SYS 用户。
数据库安全管理员(SSO)
负责配置数据库的审计设置、定义新的数据库审计员、查看数据库的审计记录,以及设置系统的安全等级、范围和组,并为主体、客体定义安全标记,从而全面提升系统安全性。在 OceanBase 数据库的 Oracle 模式中为内置的 LBACSYS 用户。
数据库审计员(AUDITOR)
负责对系统进行强制访问控制、设置需要审计的对象和操作、定义新的数据库审计员、查看和分析审计记录,以及设置系统的策略和标记。通过设置审计,几乎可以跟踪任何人在系统内执行的任何操作,为事后追查提供便利。在 OceanBase 数据库的 Oracle 模式中为内置的 ORAAUDITOR 用户。它们三者之间相互联系、互相制约,共同完成数据库的管理工作。
权限
MySQL 模式没有角色,权限模型相对简单。权限检查逻辑和 Oracle 一致。
权限分类
Oracle 模式的权限分为两类:
对象权限:对特定对象的操作权限,例如:某个表对象的 Alter、Select、Update 等权限。
系统权限:允许用户执行在一个 Schema 或者任何 Schema 上进行特定的数据库操作的权限。
系统权限提供的权限比对象权限大得多。
关于 Oracle 模式下详细的权限分类,参见 权限分类。
MySQL 模式的权限分为了 3 个级别:
管理权限:可以影响整个租户的权限,例如:修改系统设置、访问所有的表等权限。
数据库权限:可以影响某个特定数据库下所有对象的权限,例如:在对应数据库下创建删除表,访问表等权限。
对象权限:可以影响某个特定对象的权限,例如:访问一个特定的表、视图或索引的权限。
关于 MySQL 模式下详细的权限分类,参见 权限分类。
权限转授
权限转授解决了授权者集中的问题。通过在授权时指定 with admin/grant option,可以同时授予用户将对应权限转授给其他用户的权限。回收对象权限时,要同时回收该用户转授给其他用户的对应权限,即 A 授予 B 权限,B 授予 C 权限,如果 A 收回 B 的权限,C 的权限也会被回收。回收系统权限时,不会级联回收转授的权限。
角色
为了方便权限的管理,OceanBase 数据库 Oracle 模式设定了角色。角色是一组系统权限、对象权限的组合,角色中也可以包含其他角色。可以把角色授予用户,用户就拥有了角色里面的所有权限。系统在创建新租户时内置了以下默认角色:
- DBA:拥有绝大多数的系统权限。
- RESOURCE:拥有 Resource 角色的用户只可以在自己的 Schema 中创建数据库对象。
- CONNECT:拥有 Connect 权限的用户可以登录数据库。
- PUBLIC 角色:该角色适用于整个租户内的用户。默认未授予权限。
功能适用性
目前仅 OceanBase 数据库的 Oracle 租户支持角色管理。
关于角色管理的相关操作,参见 角色管理。
间接权限
用户的权限,包含直接授予的系统权限或者对象权限,也包含授予角色后,通过角色包获得的权限。大部分操作需要的权限,不论是直接授予的还是通过角色间接拥有的权限,都可以满足条件。对于下列场景,需要有直接权限才可以:
- 创建视图时,访问视图中的对象所需的权限。
- 执行定义者权限的有名 PL 块中的语句所需的权限。
功能适用性
目前仅 OceanBase 数据库的 Oracle 租户支持通过角色间接授权。
权限检查
在 SQL 解析阶段,解析出一条 SQL 语句中所需的所有权限,逐个检查用户是否拥有对应的权限。对于系统操作的权限,如果权限不足则直接报错权限不足。对于访问对象的权限,如果用户在这个对象上没有任何权限,则报错对象不存在;如果用户在这个对象上有其他权限,只是没有需要的权限,则报错权限不足。