权限是指执行特定类型SQL命令或访问其他方案对象的权利,权限包括系统权限和对象权限两种类型
1.系统权限
系统权限是指执行特定类型SQL命令的权利。它可以控制用户可以执行的一个或一组数据库操作,例如,用户具有CRAETE TABLE权限,可以在其方案中建表;当用户具有CREATE ANY TABLE权限时,可以在任何方案中建表。常见的系统权限如下:
CREATE SESSION 连接到数据库
CREATE TABLE 建表
CREATE VIEW 建立视图
CREATE PUBLIC SYNONYM 建立同义词
CREATE SEQUENCE 建立序列
CREATE PROCEDURE 建立过程、函数和包
CREATE TRIGGER 建立触发器
CREATE CLUSTER 建立簇
CREATE TYPE 建立对象类型
CREATE DATABASE LINK 建立数据库链
2.对象权限
对象权限是指访问其他方案对象的权利,它用于控制用户对其他方案对象的访问。常见的对象权限如下:
ALTER
DELETE
EXECUTE
INDEX
INSERT
REFERENCE
SELECT
UPDATE
3.授予权限
一般情况下,授予权限是由DBA完成的;如果要以其他用户身份授予系统权限,则要求该用户必须具有GRANT ANY PRIVILEGE系统权限,或在相应系统权限上具有WITH ADMIN OPTION 选项。语法如下:
GRANT system_priv[,system_priv,....] TO {user|role|PUBLIC},[,{user|role|PUBLIC}].... [WITH ADMIN OPTION]
4.收回系统权限
一般情况下,授予权限是由DBA完成的;如果要以其他用户身份授予系统权限,则要求该用户必须具有GRANT ANY PRIVILEGE系统权限,或在相应系统权限上具有WITH ADMIN OPTION 选项。语法如下:
REVOKE system_priv[,system_priv,....] FROM {user|role|PUBLIC},[,{user|role|PUBLIC}]....
注意,系统权限是不会被级联收回。
5.对象权限
跟系统权限差不多,只是语法上稍有不同。
GRANT {object_priv[(column_list)][,object_priv[(column_list)]... |ALL[PRIVILEGES]} ON [schema.]object
TO {user|role|PUBLIC}[,{user|role|PUBLIC}] .... [WITH GRANT OPTION]
6.收回权限
REVOKE {object_priv[(column_list)][,object_priv[(column_list)]... |ALL[PRIVILEGES]} ON [schema.]object
FROM {user|role|PUBLIC}[,{user|role|PUBLIC}] .... [CASCADE CONSTRAINTS];
注意,对象权限会被级联收回。