Oracle数据库将权限分为两大类:系统权限和对象权限。系统权限是在系统级对数据库进行存取和使用的机制。对象权限是指某一用户对其他用户的表、视图、序列、存储过程、函数、包等的操作权限。
授予系统权限
GRANT命令的语法如下:
GRANT system_privilege |role To user |role |PUBLIC [WITH ADMIN OPTION]
其中:
system_privilege:表示Oracle系统权限,系统权限是一组约定的保留字,如果能够创建表结构,则为CREATE TABLE;
role:角色
user:具体保留字,或者是一系列的用户。
PUBLIC:保留字,代表Oracle系统的所有所用户;
WITH ADMIN OPTION:表示被授权者可以将权限授予另外的用户。
示例:
授予连接和开发系统权限
grant connect,resource to wang
系统权限收回
REVOKE命令的语法
REVOKE system_privilege|role from user|role|public
REVOKE object_privilege|all on schema.object from user|role|public CASCADE CONSTRAINTS
其中
system_privilege:系统权限或角色;
object_privilege:对象的权限;
role:角色;
PUBLIC:保留字,代表Oracle系统所有的用户 ;
CASCADE CONSTRITRAINTS:表示有关联的权限也被撤销。
如果数据库管理员用GRANT命令给用户A授予系统权限时带有WITH ADMIN OPTION选项,则该用户A有权将系统权限再次授予另外的用户B。在这种情况下,如果数据库管理员用REVOKE命令撤销A用户的系统权限时,用户B的系统授权仍然有效。
示例:
如果用户wang具有ALTER TABLESPACE的系统权限,则将给权限撤销。
revoke alter tablespace from wang
从SCOTT用户撤销CREATE ANY INDEX的系统权限。
revoke CREATE ANY FROM SCOTT
授予对象权限
GRANT命令语法如下:
GRANT object_privilege|ALL column ON schema.object
TO user|role|public [WITH GRANT OPTION]|[WITH HIERARCHY OPTION]
其中,
object_privilege:表示对象的权限,可以是ALTER,EXECUTE,INDEX,INSERTRREFERENCES,SELECT,UPDATE;
Role:角色名;
user:被授予的用户名;
WITH ADMIN OPTION:表示被授予者可将系统权限授予其他的用户;
WITH HIERARCHY OPTION:在对象的字对象(在视图上在建立视图)上授权给用户。
撤销对象权限,REVOKE语句语法:
REVOKE object_privilege|ALL ON schema.object from user|role|public CASCADE CONSTRAINTS
其中:
object_privilege:表示对象的权限;
PUBLIC:保留字,代表Oracle系统的所有用户;
CASLCADE CONSTRAINTS:表示有关联的权限也被撤销。
Oralce 11g用于存放用户、系统权限、对象权限有关的数据字典。
来源:oschina
链接:https://my.oschina.net/u/866681/blog/213644