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
305

被折叠的 条评论
为什么被折叠?



