【转】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查询用户拥有的表

posted @ 2013-01-17 16:52  Peyton  阅读(234)  评论(0编辑  收藏  举报