系统权限
系统权限是用户进行创建、删除、更改、查询对象和其他如登录、授权等操作的能力。
默认情况下,只有系统管理员(DBA)具备系统权限。DBA通过GRANT/REVOKE语句对其他用户的进行权限授予和撤销。被授予权限时携带ADMIN OPTION选项时,该用户也能对此权限进行授权操作。
从安全性考虑,系统权限应该分别赋予可信赖的用户。
系统权限 | 角色是否拥有此权限 | 用户是否拥有此权限 | ||||||
操作类型 | 所需权限 | 权限说明 | DBA | RESOURE | CONNECT | SYS | GAUSSDBA | PUBLIC |
创建连接 | CREATE SESSION | 新创建的用户如果需要连接数据库,需要授权此权限。 | Y | - | Y | Y | Y | - |
创建用户 | CREATE USER | 创建用户时,需要被授予CREATE USER权限。 | Y | - | - | Y | Y | - |
创建角色 | CREATE ROLE | 创建角色时,需要被授予CREATE ROLE权限。 | Y | - | - | Y | Y | - |
创建表空间 | CREATE TABLESPACE | 创建表空间时,需要被授予CREATE TABLESPACE权限。 | Y | - | - | Y | Y | - |
创建表 | CREATE TABLE | 创建本schema中的表时,有两个权限之一即可。如果要创建其他用户的表,必须要有CREATE ANY TABLE权限。 | Y | Y | - | Y | Y | - |
CREATE ANY TABLE | - | |||||||
创建索引 | CREATE ANY INDEX | 创建本schema中的表时,满足如下条件之一:
| Y | - | - | Y | Y | - |
创建序列 | CREATE SEQUENCE | 创建本schema中的序列时,满足如下条件之一:
| Y | Y | - | Y | Y | - |
CREATE ANY SEQUENCE | - | |||||||
创建视图 | CREATE VIEW CREATE ANY VIEW | 创建本schema中的视图时,满足如下条件之一:
| Y | - | - | Y | Y | - |
创建数据库实例 | CREATE DATABASE | 当前仅支持在nomount状态下由SYS用户创建一个数据库实例,后续不能再创建。 | Y | - | - | Y | Y | - |
创建同名词 | CREATE SYNONYM CREATE ANY SYNONYM CREATE PUBLIC SYNONYM |
| Y | - | - | Y | Y | - |
创建函数/存储过程 | CREATE PROCEDURE |
| Y | Y | - | Y | Y | - |
CREATE ANY PROCEDURE | - | |||||||
删除用户 | DROP USER | 删除用户时,需要被授予DROP USER权限。 | Y | - | - | Y | Y | - |
删除表空间 | DROP TABLESPACE | 删除表空时,需要被授予DROP TABLESPACE权限。 | Y | - | - | Y | Y | - |
删除表 | DROP ANY TABLE | 用户能删除自己schema下的表;删除其他用户下的表,需要DROP ANY TABLE权限。 | Y | - | - | Y | Y | - |
删除索引 | DROP ANY INDEX | 用户能删除自己schema下的索引;删除其他用户下的索引,需要DROP ANY INDEX权限。 | Y | - | - | Y | Y | - |
删除序列 | DROP ANY SEQUENCE | 用户能删除自己schema下的序列;删除其他用户下的序列,需要DROP ANY SEQUENCE权限 | Y | - | - | Y | Y | - |
删除视图 | DROP ANY VIEW | 用户能删除自己schema下的视图;删除其他用户下的视图,需要DROP ANY VIEW权限。 | Y | - | - | Y | Y | - |
删除同名词 | DROP ANY SYNONYM DROP PUBLIC SYNONYM | 用户能删除自己schema下的视图;删除其他用户下的视图,需要DROP ANY SYNONYM权限;删除公共同名词,需要DROP PUBLIC SYNONYM权限;系统当前仅支持删除公共同名词。 | Y | - | - | Y | Y | - |
删除角色 | DROP ANY ROLE | 用户能删除自己创建的角色;删除任意角色,需要用户已经被授予该角色,且具有WITH GRANT OPTION,或者具有DROP ANY ROLE权限。 | Y | - | - | Y | Y | - |
锁表 | LOCK ANY TABLE | 用户能锁定自己schema下的表或者视图;锁定其他用户schema下的表,需要LOCK ANY TABLE权限。 | Y | - | - | Y | Y | - |
清空表 | DROP ANY TABLE | 用户可通过TRUNCATE TABLE语句删除表中所有的行。用户能清空自己schema下的表;清空其他用户schema下的表,需要DROP ANY TABLE权限。 | Y | - | - | Y | Y | - |
闪回表 | FLASHBACK ANY TABLE | 闪回自己schema下的表,所需权限与DROP TABLE操作的权限相同;闪回其他schema下的表,需要FLASHBACK ANY TABLE权限。注:后续根据FLASHBACK TABLE操作的同步类型(SCN/TIMESTAMP/BEFORE) 区分所需不同的权限。 | Y | - | - | Y | Y | - |
清除操作 | DROP ANY TABLE DROP ANY INDEX DROP TABLESPACE PURGE DBA_RECYCLEBIN | 清除(PURGE)操作支持:表(PURGE TABLE)、索引(PURGE INDEX)、表空间(PURGE TABLESPACE)、回收站(PURGE RECYCLEBIN)。 要清除的对象(table/index)属于用户自己,不需要授予权限;如果要清除的对象属于其他用户,按照对象类型,需要的权限要求为:清除表需要DROP ANY TABLE权限;清除索引需要DROP ANY INDEX权限;清空回收站需要PURGE DBA_RECYCLEBIN权限;清除表空间需要DROP TABLESPACE权限。 | Y | - | - | Y | Y | - |
删除函数或存储过程 | DROP ANY PROCEDURE | 用户能删除属于自己schema下的函数或者存储过程。 如果是删除属于其他用户的函数或者存储过程,需要授予DROP ANY PROCEDURE权限。 | Y | - | - | Y | Y | - |
修改会话参数 | ALTER SESSION | 当前所有参数都是与当前会话相关,无需授权即可修改。ALTER SESSION权限暂时预留。 | Y | - | - | Y | Y | - |
修改表空间 | ALTER TABLESPACE | 修改表空间属性时,需要被授予ALTER TABLESPACE权限。 | Y | - | - | Y | Y | - |
修改系统属性 | ALTER SYSTEM | 修改系统属性时,需要被授予ALTER SYSTEM权限。 | Y | - | - | Y | Y | - |
修改数据库 | ALTER DATABASE | 修改数据库属性时,需要被授予ALTER DATABASE权限。 | Y | - | - | Y | Y | - |
修改用户信息 | ALTER USER | 更改用户信息时,需要授予该权限。特别的,普通用户无需该权限就可以修改自己密码,即使拥有该权限,也不能修改其他用户的密码。授予DBA角色的用户即使拥有该权限,也不能修改其他DBA用户的密码。 | Y | - | - | Y | Y | - |
修改表 | ALTER ANY TABLE | 用户是表的属主,不需要授权;否则需要表的ALTER对象权限,或者ALTER ANY TABLE权限。 | Y | - | - | Y | Y | - |
修改索引 | ALTER ANY INDEX | 用户有权限修改属于自己schema下索引的属性,不需要其他权限。 如果要修改其他用户schema下的索引属性,需要授予ALTER ANY INDEX系统权限。 | Y | - | - | Y | Y | - |
修改序列 | ALTER ANY SEQUENCE | 用户是序列的属主,不需要授权;否则需要序列的ALTER对象权限,或者ALTER ANY SEQUENCE权限。 | Y | - | - | Y | Y | - |
访问序列 | SELECT ANY SEQUENCE | 用户有权限访问属于自己的序列,不需要授予权限。 如果要其他用户的序列,需要被授予SELECT ANY SEQUENCE权限。 | Y | - | - | Y | Y | - |
授权操作 | GRANT ANY PRIVILEGE GRANT ANY ROLE GRANT ANY OBJECT PRIVILEGE | 如果是授权系统权限,执行该语句的用户需要满足如下条件之一:
如果是授予角色,执行该语句的用户需要满足如下条件之一:
拥有GRANT ANY OBJECT PRIVILEGE系统权限的用户能够将任意用户的对象的权限授予给其他用户。 | Y | - | - | Y | Y | - |
回收权限操作 | GRANT ANY PRIVILEGE GRANT ANY ROLE | 如果是回收系统权限,执行该语句的用户需要满足如下条件之一:
如果是回收角色,执行该语句的用户需要满足如下条件之一:
| Y | - | - | Y | Y | - |
更改PROFILE属性 | ALTER PROFILE | 更改profile属性时,执行该语句的用户需要被授予该权限。 | Y | - | - | Y | Y | - |
创建PROFILE | CREATE PROFILE | 创建profile时,执行该语句的用户需要被授予该权限。 | Y | - | - | Y | Y | - |
删除PROFILE | DROP PROFILE | 删除profile时,执行该语句的用户需要被授予该权限。 | Y | - | - | Y | Y | - |
读取任意表或视图数据 | READ ANY TABLE SELECT ANY TABLE | 拥有该权限的用户能查询任意表或视图的数据。如果包含for update子句,只有拥有SELECT ANY TABLE权限的用户能够查询。 | Y | - | - | Y | Y | - |
注释权限 | COMMENT ANY TABLE | 为自己的表增加注释时,不需要权限;为任意用户的表增加注释时,需要执行语句的用户拥有该权限。 | Y | - | - | Y | Y | - |
更新表数据 | UPDATE ANY TABLE | 拥有该权限的用户能够更新任意用户表的数据。 | Y | - | - | Y | Y | - |
**表数据 | INSERT ANY TABLE | 拥有该权限的用户能够为任意用户表**数据。 | Y | - | - | Y | Y | - |
删除表数据 | DELETE ANY TABLE | 拥有该权限的用户能够删除任意用户表的数据。 | Y | - | - | Y | Y | - |
备份操作 | SYSBACKUP SYSDBA | 执行备份操作需要用户拥有SYSBACKUP或者SYSDBA权限。 | Y | - | - | Y | Y | - |
恢复操作 | SYSDBA | 执行恢复操作需要用户拥有SYSDBA权限。 | Y | - | - | Y | Y | - |
停止数据库 | SYSDBA | 执行停止数据库操作需要用户拥有SYSDBA权限。 | Y | - | - | Y | Y | - |
重建备机 | SYSDBA | 执行重建备机操作需要用户拥有SYSDBA权限。 | Y | - | - | Y | Y | - |
物理备份集的合法性校验 | SYSDBA | 执行物理备份集的合法性校验操作需要用户拥有SYSDBA权限。 | Y | - | - | Y | Y | - |
分析表操作 | ANALYZE ANY | 分析自己的表时,不需要权限,分析其他用户表时(SYS用户除外)需要ANALYZE ANY权限,分析SYS用户的表需要DBA权限。 | Y | - | - | Y | Y | - |
修改触发器 | ALTER ANY TRIGGER | 修改属于自己的触发器定义时,不需要授予权限。修改其他用户的触发器定义,需要执行alter trigger语句的用户被授予该权限。 | Y | - | - | Y | Y | - |
创建触发器 | CREATE TRIGGER | 创建属于自己的触发器时,需要用户被授予CREATE TRIGGER权限。 创建属于其他用户的触发器时,需要用户被授予CREATE ANY TRIGGER权限。 | Y | Y | - | Y | Y | - |
CREATE ANY TRIGGER | - | |||||||
删除触发器 | DROP ANY TRIGGER | 删除属于自己的触发器时,不需要授予权限。 删除属于其他用户的触发器时,需要被授予DROP ANY TRIGGER权限。 | Y | - | - | Y | Y | - |
执行存储过程 | EXECUTE ANY PROCEDURE | 执行属于自己的存储过程时,不需要授予权限。 执行属于其他的用户的存储过程时,需要被授予EXECUTE ANY PROCEDURE系统权限或者该存储过程的execute对象权限。 | Y | - | - | Y | Y | - |
修改存储过程 | ALTER ANY PROCEDURE | 预留权限 | Y | - | - | Y | Y | - |
修改物化视图 | ALTER ANY MATERIALIZED VIEW | 预留权限 | Y | - | - | Y | Y | - |
创建物化视图 | CREATE ANY MATERIALIZED VIEW CREATE MATERIALIZED VIEW | 预留权限 | Y | - | - | Y | Y | - |
删除物化视图 | DROP ANY MATERIALIZED VIEW | 预留权限 | Y | - | - | Y | Y | - |
修改角色属性 | ALTER ANY ROLE | 预留权限 | Y | - | - | Y | Y | - |
创建分布规则 | CREATE DISTRIBUTE RULE | 创建分布式规则时,需要用户被授予CREATE DISTRIBUTE RULE权限 | Y | - | - | Y | Y | - |
闪回归档 | FLASHBACK ARCHIVE ADMINISTER | 预留权限 | Y | - | - | Y | Y | - |
全局查询重写 | GLOBAL QUERY REWRITE | 预留权限 | Y | - | - | Y | Y | - |
管理表空间 | MANAGE TABLESPACE | 预留权限 | Y | - | - | Y | Y | - |
物化视图刷新 | ON COMMIT REFRESH | 预留权限 | Y | - | - | Y | Y | - |
无限制使用表空间 | UNLIMITED TABLESPACE | 预留权限 | Y | - | - | Y | Y | - |
创建子视图 | UNDER ANY VIEW | 预留权限 | Y | - | - | Y | Y | - |
系统操作员权限 | SYSOPER | 预留权限 | Y | - | - | Y | Y | - |
创建节点 | CREATE NODE | 创建集群节点时,需要被授予CREATE NODE权限。 | Y | - | - | Y | Y | - |
删除节点 | DROP NODE | 删除集群环境中的节点时,需要被授予DROP NODE权限。 | Y | - | - | Y | Y | - |
修改节点属性 | ALTER NODE | 修改集群环境中的节点属性时,需要被授予ALTER NODE权限。 | Y | - | - | Y | Y | - |