OceanBase用户和权限管理
OceanBase用户和权限管理
- 系统租户
- MySQL租户
- 用户类型
- 用户权限
- Oracle租户
- 用户类型
- 用户权限
OceanBase数据库中的用户分为两类:系统租户下的用户和用户租户下的用户。用户租户又分为Oracle模式租户和MySQL模式租户。
系统租户
系统租户的用户主要包括集群管理员和普通用户。
OceanBase数据库的集群管理员为安装OceanBase数据库时自动创建,其主要负责本集群内数据库的安装和升级、租户的创建、资源的分配、数据的导入导出,以及集群中数据的备份和恢复等。
OceanBase的系统租户(SYS)为MySQL兼容模式。系统租户有一个内置的集群管理员用户root
。
系统租户的集群管理员创建的用户即为系统租户下的普通用户。系统租户下的普通用户主要负责集群内租户的创建、资源的分配、访问权限的自主分配等。
MySQL租户
用户类型
MySQL租户下的用户主要包括租户管理员和普通用户。
-
OceanBase数据库的MySQL租户有一个内置用户
root
作为租户管理员。OceanBase数据库的租户管理员主要负责本租户内数据库参数的配置、数据库对象的创建、访问权限的分配等。 -
普通用户主要进行数据库对象的访问和操作,故必须拥有本租户对应数据库对象的访问和操作权限。
MySQL租户下创建用户的SQL如下:
CREATE USER 'test2' IDENTIFIED BY '**1***';
用户权限
MySQL租户下的用户权限可以分为以下三类:
- 用户级权限:用户级权限是全局的权限,不是针对某个指定的数据库。
- 数据库级权限:数据库级权限适用于数据库及其中的所有对象。
- 对象权限:对象权限适用于所有数据库中指定类型的对象。这些权限可以授予数据库中指定的对象、数据库中指定类型的所有对象(例如,数据库中的所有表)或全局授予所有数据库对象(例如表、索引、视图)的权限。
⭐️ 用户级权限包括:
CREATE
:确定用户是否可以创建数据库和表。ALTER
:确定用户是否可以重命名和修改表结构。SELECT
:确定用户是否可以查询表中的数据。INSERT
:确定用户是否可以在表中插入行数据。UPDATE
:确定用户是否可以修改现有数据。DELETE
:确定用户是否可以删除现有数据。DROP
:确定用户是否可以删除现有数据库、表和视图。INDEX
:确定用户是否可以创建和删除表索引。CREATE VIEW
:确定用户是否可以创建视图。SHOW VIEW
:确定用户是否可以查看视图或了解视图如何执行。ALTER TENANT
:修改租户信息的权限。ALTER SYSTEM
:执行ALTER SYSTEM命令的权限。CREATE RESOURCE POOL
:创建、修改和删除资源池的权限。CREATE RESOURCE UNIT
:创建、修改和删除资源单元的权限。CREATE USER
:确定用户是否可以执行CREATE USER命令创建新的MySQL账号。PROCESS
:确定用户是否可以通过SHOW PROCESSLIST
命令查看其他用户的进程。SHOW DB
:确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库。FILE
:确定用户是否可以执行SELECT INTO OUTFILE
和LOAD DATA INFILE
命令。sSUPER
:确定用户是否可以执行某些强大的管理功能,例如通过KILL
命令删除用户进程,使用SET GLOBAL
修改全局MySQL变量,执行关于复制和日志的各种命令。
⭐️ 数据库级权限包括:
SELECT
:确定用户是否可以查询表中的数据。INSERT
:确定用户是否可以在表中插入行数据。UPDATE
:确定用户是否可以修改现有数据。DELETE
:确定用户是否可以删除现有数据。CREATE
:确定用户是否可以创建数据库和表。DROP
:确定用户是否可以删除现有数据库、表和视图。INDEX
:确定用户是否可以创建和删除表索引。ALTER
:确定用户是否可以重命名和修改表结构。CREATE VIEW
:确定用户是否可以创建视图。SHOW VIEW
:确定用户是否可以查看视图或了解视图如何执行。
⭐️ 对象权限包括:
SELECT
:确定用户是否可以查询表中的数据。INSERT
:确定用户是否可以在表中插入行数据。UPDATE
:确定用户是否可以修改现有数据。DELETE
:确定用户是否可以删除现有数据。CREATE
:确定用户是否可以创建数据库和表。DROP
:确定用户是否可以删除现有数据库、表和视图。INDEX
:确定用户是否可以创建和删除表索引。ALTER
:确定用户是否可以重命名和修改表结构。CREATE VIEW
:确定用户是否可以创建视图。SHOW VIEW
:确定用户是否可以查看视图或了解视图如何执行。
MySQL租户下用户授权的示例如下:
--授予用户级权限
GRANT ALL ON *.* TO test;
GRANT SELECT, INSERT ON *.* TO test;--授予数据库级权限
GRANT ALL ON db1.* TO test;
GRANT SELECT, INSERT ON db1.* TO test;--授予表级权限
GRANT SELECT, INSERT ON db1.tb1_name TO test;
GRANT ALL ON db1.tb1_name TO test;
撤销权限使用REVOKE ... FROM
语句。
Oracle租户
用户类型
Oracle租户下的用户可以分为租户管理员、数据库安全管理员、数据库审计员、以及普通用户。
-
Oracle租户有一个内置用户
SYS
作为租户管理员。OceanBase数据库的租户管理员主要负责本租户内数据库参数的配置、数据库对象的创建以及访问权限的自主分配等。 -
OceanBase数据库部署完成后,系统中内置了一个用户
LBACSYS
作为该租户的数据库安全管理员。Oracle租户的数据库安全管理员主要负责本租户内配置数据库的审计设置、定义新的数据库审计员、查看数据库的审计记录,以及设置系统的安全等级、范围和组,并为主体、客体定义安全标记,从而全面提升系统安全性。 -
OceanBase数据库部署完成后,系统中内置了一个用户
ORAAUDITOR
作为数据库审计员。Oracle租户的数据库审计员主要负责对本租户内系统进行强制访问控制、设置需要审计的对象和操作、定义新的数据库审计员、查看和分析审计记录,以及设置系统的策略和标记。 -
普通用户主要进行数据库对象的访问和操作,故必须拥有本租户对应数据库对象的访问和操作权限。
Oracle租户下创建用户的SQL如下:
CREATE USER test2 IDENTIFIED BY **1***;
用户权限
Oracle 模式的权限主要有以下三类:
- 系统权限:系统权限允许用户在数据库中执行标准的管理员任务,如果需要对Schema对象执行操作,就必须对其授予适当的系统权限。系统权限非常强大,建议仅授予受信任的用户使用。
- 对象权限:对象权限允许用户对指定对象执行特定的操作。
- 角色权限:在Oracle模式中,角色是一组系统权限和对象权限的组合。
- 角色可以被授予系统权限或对象权限。
- 角色可以被授予其他角色,即角色中可以包含其他角色。
- 一个用户可以被授予多个角色,一个角色也可以赋予多个用户。
⭐️ 系统权限包括:
-
CREATE SESSION
:创建会话的权限。 -
CREATE TABLE
:创建表的权限。 -
CREATE ANY TABLE
:创建任意表的权限。 -
ALTER ANY TABLE
:修改任意表的权限。 -
INSERT ANY TABLE
:向任意表中插入行的权限。 -
SELECT ANY TABLE
:使用任意表的权限。 -
UPDATE ANY TABLE
:修改任意表中的行的权限。 -
DELETE ANY TABLE
:删除任意表数据的权限。 -
DROP ANY TABLE
:删除任意表的权限。 -
BACKUP ANY TABLE
:备份任意表的权限。 -
LOCK ANY TABLE
:给任意表加锁的权限。 -
COMMENT ANY TABLE
:为任意表添加注释的权限。 -
FLASHBACK ANY TABLE
:闪回任意表的权限。 -
CREATE ANY INDEX
:创建任意索引的权限。 -
ALTER ANY INDEX
:修改任意索引的权限。 -
DROP ANY INDEX
:删除任意索引的权限。 -
CREATE VIEW
:创建视图的权限。 -
CREATE ANY VIEW
:创建任意视图的权限。 -
DROP ANY VIEW
:删除任意视图的权限。 -
SELECT ANY DICTIONARY
:使用任意数据字典的权限。 -
CREATE PROCEDURE
:为用户创建存储过程的权限。 -
CREATE ANY PROCEDURE
:为用户创建任意存储过程的权限。 -
ALTER ANY PROCEDURE
:修改任意存储过程的权限。 -
DROP ANY PROCEDURE
:删除任意存储过程的权限。 -
EXECUTE ANY PROCEDURE
:执行任意存储过程的权限。 -
CREATE SYNONYM
:为用户创建同义词的权限。 -
CREATE ANY SYNONYM
:为用户创建任意同义词的权限。 -
CREATE PUBLIC SYNONYM
:创建公共同义词的权限。 -
DROP ANY SYNONYM
:删除任意同义词的权限。 -
DROP PUBLIC SYNONYM
:删除公共同义词的权限。 -
CREATE SEQUENCE
:为用户创建序列的权限。 -
CREATE ANY SEQUENCE
:创建任意序列的权限。 -
ALTER ANY SEQUENCE
:修改任意序列的权限。 -
DROP ANY SEQUENCE
:删除任意序列的权限。 -
SELECT ANY SEQUENCE
:使用任意序列的权限。 -
CREATE TRIGGER
:为用户创建触发器的权限。 -
CREATE ANY TRIGGER
:为用户创建任意触发器的权限。 -
ALTER ANY TRIGGER
:修改任意触发器的权限。 -
DROP ANY TRIGGER
:删除任意触发器的权限。 -
CREATE TYPE
:创建类型的权限。 -
CREATE ANY TYPE
:创建任意类型的权限。 -
ALTER ANY TYPE
:修改任意类型的权限。 -
DROP ANY TYPE
:删除任意类型的权限。 -
EXECUTE ANY TYPE
:执行任意类型的权限。 -
CREATE USER
:创建用户的权限。 -
ALTER USER
:修改用户的权限。 -
DROP USER
:删除用户的权限。 -
BECOME USER
:切换用户状态的权限。 -
CREATE PROFILE
:创建资源限制简表的权限。 -
ALTER PROFILE
:修改资源限制简表的权限。 -
DROP PROFILE
:删除资源限制简表的权限。 -
CREATE TABLESPACE
:创建表空间的权限。 -
ALTER TABLESPACE
:修改表空间的权限。 -
DROP TABLESPACE
:删除表空间的权限。 -
CREATE ROLE
:创建角色的权限。 -
DROP ANY ROLE
:删除任意角色的权限。 -
GRANT ANY ROLE
:授予任意角色的权限。 -
ALTER ANY ROLE
:修改任意角色的权限。 -
CREATE ANY OUTLINE
:创建任意执行计划的权限。 -
ALTER ANY OUTLINE
:修改任意执行计划的权限。 -
DROP ANY OUTLINE
:删除任意执行计划的权限。 -
CREATE DATABASE LINK
:创建数据库连接的权限。 -
CREATE PUBLIC DATABASE LINK
:创建公共数据库连接的权限。 -
DROP DATABASE LINK
:删除数据库连接的权限。 -
CREATE ANY DIRECTORY
:创建任意目录的权限。 -
DROP ANY DIRECTORY
:删除任意目录的权限。 -
SHOW PROCESS
:查看所有用户线程的权限。 -
ALTER SYSTEM
:修改服务器设置的权限。 -
ALTER SESSION
:修改会话的权限。 -
ALTER DATABASE
:修改数据库的权限。 -
DEBUG CONNECT SESSION
:调试连接会话的权限。 -
DEBUG ANY PROCEDURE
:调试任何程序的权限。 -
PURGE DBA_RECYCLEBIN
:清除回收站的权限。 -
AUDIT ANY
:为任意对象设置审计选项的权限。 -
GRANT ANY PRIVILEGE
:授予用户任意系统权限的权限。 -
GRANT ANY OBJECT PRIVILEGE
:授予用户任意对象权限的权限。
⭐️ 对象权限包括:
ALTER
:修改表结构的权限。INSERT
:向表、视图中插入数据的权限。UPDATE
:修改表、视图中数据的权限。DELETE
:删除表、视图中数据的权限。SELECT
:使用表、视图、同义词、序列的权限。INDEX
:给表加索引的权限。REFERENCE
:参考/应用表的权限。EXECUTE
:执行存储过程、函数、系统包的权限。READ
:读权限。WRITE
:写权限。
⭐️ 在Oracle模式中,系统默认内置了一些角色:
CONNECT
:拥有CREATE SESSION
的系统权限。RESOURCE
:拥有CREATE TABLE
、CREATE PROCEDURE
、CREATE SEQUENCE
、CREATE TRIGGER
以及CREATE TYPE
的系统权限。PUBLIC
:该角色适用于整个租户内的用户。默认未授予权限。DBA
:拥有所有的系统权限。
Oracle租户下用户授权的示例如下:
--授予系统权限
GRANT CREATE SEQUENCE TO test2;--授予对象权限
GRANT SELECT, UPDATE ON emp_view TO test2;--授予角色权限
GRANT CONNECT,RESOURCE TO test2;
撤销权限使用REVOKE ... FROM
语句。
References
【1】https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000887411
【2】https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000887415