samsungsamsung 发表于 2015-6-17 09:57:36

【转】Oracle中的权限

  权限管理主要涉及三个概念:用户,角色,权限。
  在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查询用户拥有的表
页: [1]
查看完整版本: 【转】Oracle中的权限