zoukankan      html  css  js  c++  java
  • Oracle查询用户权限

    Oracle查询用户权限

    -- 确定角色的权限
    select * from role_tab_privs ;              包含了授予角色的对象权限
    select * from role_role_privs ;             包含了授予另一角色的角色
    select * from role_sys_privs ;              包含了授予角色的系统权限

    -- 确定用户帐户所授予的权限
    select * from DBA_tab_privs ;   直接授予用户帐户的对象权限
    select * from DBA_role_privs ; 授予用户帐户的角色
    select * from DBA_sys_privs ;   授予用户帐户的系统权限


    查看当前用户权限:
    SQL> select * from session_privs;

    PRIVILEGE
    ----------------------------------------
    CREATE SESSION
    CREATE TABLE
    CREATE CLUSTER
    CREATE SYNONYM
    CREATE VIEW
    CREATE SEQUENCE
    CREATE PROCEDURE
    CREATE TRIGGER

    8 rows selected.

    Oracle 本身的数据字典设计我个人觉得很合理, 因为DBA_xxx, ALL_xxx,USER_xxx 让人一看大概就知道这个视图是干什么用的. 本文简要总结了一下与权限,角色相关的视图.

    一. 概述

       与权限,角色相关的视图大概有下面这些:

           DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限

          USER_SYS_PRIVS:   当前用户所拥有的系统权限

          SESSION_PRIVS:     当前用户所拥有的全部权限

          ROLE_SYS_PRIVS:     某个角色所拥有的系统权限

           注意: 要以SYS用户登陆查询这个视图,否则返回空.

          ROLE_ROLE_PRIVS:    当前角色被赋予的角色

          SESSION_ROLES:      当前用户被激活的角色

          USER_ROLE_PRIVS:   当前用户被授予的角色

          另外还有针对表的访问权限的视图:

           TABLE_PRIVILEGES

            ALL_TAB_PRIVS   

           ROLE_TAB_PRIVS:     某个角色被赋予的相关表的权限

           ...   

    二. Examples
       1. 查询当前用户所拥有的权限

                   Select * from session_privs;      

       2.   查询某个用户被赋予的系统权限.

                可以有多种方式

                        Select * from user_sys_privs;

               或者: select * from DBA_SYS_PRIVS where grantee='XXX'

                     (需要当前用户拥有DBA角色)

      3. 查询当前用户被授予的角色:

                1. Select * from SESSION_ROLES order by ROLE  

                说明: 这个查询会返回当前用户所被授予的全部角色, 其中包括

                嵌套授权的角色. 例如将DBA角色授予了一个用户,DBA角色

                已经被授予的角色(例如 exp_full_database 和 imp_full_database)

                 也会被查询出来              

                2. Select * from USER_ROLE_PRIVS       

         4. 查询某一角色被赋予的系统权限

               Select Privilege from ROLE_SYS_PRIVS where ROLE=&Role

            输入 role='CONNECT'

             输出:
               PRIVILEGE
               --------------------
              ALTER SESSION
                CREATE CLUSTER
                CREATE DATABASE LINK
                CREATE SEQUENCE
                CREATE SESSION
                CREATE SYNONYM
                CREATE TABLE
                CREATE VIEW

       5. 查询当前角色被授予的角色

             Select GRANTED_ROLE from ROLE_ROLE_PRIVS where ROLE=&ROLE

             输入 role= 'DBA'

              输出:

               GRANTED_ROLE
               ----------------------
              DELETE_CATALOG_ROLE
                EXECUTE_CATALOG_ROLE
                EXP_FULL_DATABASE
                IMP_FULL_DATABASE
                PLUSTRACE
                SELECT_CATALOG_ROLE

            说明: PLUSTRACE这个角色是用于执行SQL AUTO TRACE的, 通过执行

                   $ORACLE_HOME/sqlplus/admin/plustrce.sql可以生成这个角色.

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    如何查看oracle用户权限?


     ORACLE数据字典视图的种类分别为:USER,ALL 和 DBA。

      USER_*:有关用户所拥有的对象信息,即用户自己创建的对象信息

      ALL_*:有关用户可以访问的对象的信息,即用户自己创建的对象的信息加上

    其他用户创建的对象但该用户有权访问的信息

      DBA_*:有关整个数据库中对象的信息

      (这里的*可以为TABLES,INDEXES,OBJECTS,USERS等。)

      1、查看所有用户

      select * from dba_user;

      select * from all_users;

      select * from user_users;

      2、查看用户系统权限

      select * from dba_sys_privs;

      select * from all_sys_privs;

      select * from user_sys_privs;

      3、查看用户对象权限

      select * from dba_tab_privs;

      select * from all_tab_privs;

      select * from user_tab_privs;

      4、查看所有角色

      select * from dba_roles;

      5、查看用户所拥有的角色

      select * from dba_role_privs;

      select * from user_role_privs;

      6、查看当前用户的缺省表空间

      select username,default_tablespace from user_users;

      7、查看某个角色的具体权限

      如grant connect,resource,create session,create view to TEST;

      8、查看RESOURCE具有那些权限

      用SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='RESOURCE'; 

  • 相关阅读:
    数仓1.3 |行为数据| 业务数据需求
    数仓1.1 |概述| 集群环境搭建
    麒麟Kylin
    ng--todolist
    mysql必知必会--用正则表达式 进行搜索
    mysql必知必会--用通配符进行过滤
    mysql必知必会--数 据 过 滤
    mysql必知必会--过 滤 数 据
    mysql必知必会--排序检索数据
    mysql必知必会--检 索 数 据
  • 原文地址:https://www.cnblogs.com/yujy/p/3198579.html
Copyright © 2011-2022 走看看