【问题标题】:ORACLE query to find all permissions/access for all users in a databaseORACLE 查询以查找数据库中所有用户的所有权限/访问权限
【发布时间】:2018-10-03 03:39:32
【问题描述】:

我正在寻找一个列出所有有权访问特定数据库的用户的查询。希望与此类似,但要查询 Oracle 数据库。 SQL Server query to find all permissions/access for all users in a database

【问题讨论】:

    标签: sql oracle database-permissions


    【解决方案1】:

    Oracle 的数据库管理员 (DBA) 只需执行查询即可查看 DBA_SYS_PRIVSDBA_TAB_PRIVSDBA_ROLE_PRIVS 中的行,以检索与系统相关的用户权限信息、表格角色

    例如,希望查看授予所有用户的所有系统权限的 DBA 会发出以下查询:

    SELECT *
      FROM DBA_SYS_PRIVS;
    

    要确定哪些用户直接授予访问的权限,我们将使用DBA_TAB_PRIVS 视图:

    SELECT *
      FROM DBA_TAB_PRIVS;
    

    最后,查询DBA_ROLE_PRIVS 视图具有许多相同的信息,但适用于角色,其中GRANTED_ROLE 列指定了相关角色:

    SELECT *
      FROM DBA_ROLE_PRIVS;
    

    查看完整教程here

    【讨论】:

    • 我想要一个查询。
    • 此视图列出特定用户的所有授权:select * from DBA_TAB_PRIVS where grantee = 'your user';
    【解决方案2】:

    查询哪个用户被授予system privilege,例如DEBUG ANY PROCEDUREON COMMIT REFRESHINSERT ANY TABLECREATE ANY JOBFLASHBACK ANY TABLE ...等。

    select p.* from dba_sys_privs p where p.grantee = upper('<your_user_name>');
    

    查询DMLEXECUTIONDEBUG对象的权限,例如TABLEVIEWPROCEDUREFUNCTION ...等

    select p.* from dba_tab_privs p where p.grantee = upper('<your_user_name>');
    

    查看哪个用户授予了对象权限

    select p.* from dba_tab_privs p where p.owner = upper('<your_user_name>');
    

    可以使用。

    【讨论】:

    • 我想要一个查询。
    • @wendy - 然后将它们结合在一起
    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多