【转】Oracle中的权限 ---OCP--047--149
权限管理主要涉及三个概念:用户,角色,权限。
在Oracle中对应于三个对象User,Role,Privilege;
用户就是具体使用数据库的使用者,包括DBA,开发使用者,
角色包含一组相关的权限,可以方便权限的管理,
权限可以分为System privilege和Object privilege,系统权限主要是针对数据库级别的,而对象权限主要是针对数据库的对象的级别。
简单的类比:张老师,王同学是User;老师,学生是角色;教课,上课等等就是权限。
具体操作:
create user user1 identified by user1;
alter user user1 identified by test;
create role role1;
grant create session to role1;
grant select on user1.a to role1;
grant unlimited tablespace to role1;
grant create table to role1;
grant role1 to user1;
grant update any table to user1 with grant option;
revoke role1 from user1;
注意多用户循环授权之后,如果上级用户的权限被revoke,下级所有权限和角色都会依次revoke,这里只正对with grant option clause。
所以这里牵涉with admin option 与 with grant option, 其中with admin option只能修饰系统权限时用,而with grant option只能修饰对象权限用,对于角色授权时如果需要授予grantable权限只能用with admin option,不管此角色中包含的是系统权限还是对象权限,另外的区别就是当权限被收回时,with grant option授予的权限会被级联收回,而用with admin option授予的系统权限仍然保留,不会被级联收回,这也在某种程度上带来了管理上的麻烦和危险,所以系统权限一般都是由DBA授予,而且一般不会给其他非DBA用户授予系统权限时附加with admin option选项。
权限相关data dictionary tables:
role_sys_privs; --所有角色拥有的系统权限
role_tab_privs; --所有角色拥有的对象权限
user_role_privs; --用户拥有的角色
user_sys_privs; --用户拥有的系统权限
user_tab_privs; --用户拥有的对象权限
user_tab_privs_recd;
user_tab_privs_made;
user_Tables查询用户拥有的表