您的位置:首页 > 数据库 > Oracle

Oracle 权限相关

2015-02-06 10:13 232 查看
一、查询自己角色

只能查询自己具有的权限,不包括授予的角色,所以也就不能查询通过角色授予的权限。

SELECT * FROM dba_sys_privs WHERE grantee = 'username';  可以查询某个user拥有哪些系统权限 (SYS用户)

SELECT * FROM user_sys_privs 可以查询自己拥有哪些系统权限 

查询一个用户的所有系统权限(包含角色的系统权限) (DBA执行)

SELECT privilege FROM dba_sys_privs WHERE grantee='USERNAME'

union

SELECT privilege FROM dba_sys_privs WHERE grantee IN (SELECT granted_role FROM dba_role_privs WHERE grantee='USERNAME');

用户自己查询(用DBA执行存在重复权限的问题,例如ADMINISTER ANY SQL TUNING SET 存在于DBA和SYS里面。)

SELECT * FROM user_sys_privs 

UNION 

SELECT * FROM role_sys_privs;

需要使用

SELECT privilege FROM user_sys_privs

UNION

SELECT privilege FROM role_sys_privs;

二、角色管理

1、通过role来简化赋权操作,每个role含有若干项系统权限。role包括系统预定义和自定义两种。
    select * from dba_roles; --查询当前所有ROLE列表,包括自定义
    select * from dba_role_privs; --查询某用户的ROLE权限(DBA执行)
  select * from
user_role_privs; --查询自己的ROLE权限(与dba_role_privs字段不一致)
    select * from role_sys_privs; --查询当前用户的ROLE,及其所包含的系统权限

三、授权管理

1、使用GRANT语句向用户赋予系统权限: 
    GRANT system_privilege TO user_name [WITH ADMIN OPTION];
    注:使用WITH ADMIN OPTION语句后,使用户可以将相同权限赋给其他用户。
 
2、使用REVOKE语句撤销系统权限: 
    REVOKE system_privilege FROM user_name;

    注:当删除A用户的权限时,通过A赋予B的权限不会消失。
3、系统权限回收:系统权限只能由DBA用户回收

命令:SQL> Revoke connect, resource from username;

系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。

4、实体权限分类:select, update, insert, alter, index, delete, all  //all包括所有权限
   execute  //执行存储过程权限

5. 将表的操作权限授予全体用户:

SQL> grant all on tablename to public;  // public表示是所有的用户,这里的all权限不包括drop。

[实体权限数据字典]:

SQL> select owner, table_name from all_tables; // 用户可以查询的表

SQL> select table_name from user_tables;  // 用户创建的表

SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; // 获权可以存取的表(被授权的)

SQL> select grantee, owner, table_name, privilege from user_tab_privs;   // 授出权限的表(授出的权限)

四、with admin option 和 with grant option

with admin option 用于系统权限授权,with grant option 用于对象授权。

       给一个用户授予系统权限带上with admin option 时,此用户可把此系统权限授予其他用户或角色,但收回这个用户的系统权限时,这个用户已经授予其他用户或角色的此系统权限不会因传播无效,如授予A系统权限create session with admin option,然后A又把create session权限授予B,但管理员收回A的create session权限时,B依然拥有create session的权限,但管理员可以显式收回B create session的权限,即直接revoke
create session from B.

     with grant option用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是但管理员收回用with grant option授权的用户对象权限时,权限会因传播而失效,如grant select on table with grant option to A,A用户把此权限授予B,但管理员收回A的权限时,B的权限也会失效,但管理员不可以直接收回B的SELECT ON TABLE 权限。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: