1.数据库权限有几类?连接?read?写?
Oracle数据库权限分为:系统权限和对象权限。
系统权限:指SESSION权限、USER权限等,也就是说对数据库的系统级的操都可以称为系统权限。 with admin option
对象权限:指表对象、序列、触发器等操作的权限。 with grant option
1.1查看所有的系统权限
通过语句:SELECT * FROM SYSTEM_PRIVILEGE_MAP ;查看oracle11g有208种系统权限
1.2查询某个用户拥有的权限
查询用户拥有的系统权限(直接赋值给用户的系统权限)
select * from user_sys_privs;
查询通过角色赋值给用户的系统权限
1)查询用户所拥有的角色
select * from user_role_privs;
2)查询角色所拥有的系统权限
select * from role_sys_privs where role='角色名';
查询用户所拥有的对象权限(直接赋值给用户的对象权限)
select * from user_tab_privs;
查询通过角色赋值给用户的对象权限
1) 查询用户所拥有的角色
select * from user_role_privs;
2)查询角色所拥有的对象权限
select * from role_tab_privs where role='角色名'
---------------------------------------------------------------------------------------------------------
1.select any table 系统权限
给普通用户授予select any table 权限,可以查看所有用户的表,但是查不到部分sys用户的表或视图,比如 dba_segments
2.select_catalog_role 角色权限(查询数据字典)
select_catalog_role 是一种角色(a role),select_catalog_role可以查看一些数据字典的视图·(可以看role的定义),如dba_之类的
给普通用户授予select_catalog_role角色,可以查看一些sys用户可以看到的表和视图,比如dba_segments,dba_tables但不是所有的表
角色的话需要重新登录或者显式的set role 来生效,而赋予系统权限是立即生效的。(P.S. 同样revoke权限也是立即生效)
-------------------------------------------------------------------------------------------------------
参考资料:
1.select any dictionary与select_catalog_role区别