新闻资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻资讯列表

oracle如何查询用户拥有的权限,oracle如何查询用户下所有表

发布时间:2023-11-16 17:14:21

oracle如何查询用户具有的权限

在Oracle数据库中,可使用以下方法查询用户具有的权限:

  1. 使用系统提供的视图:查询用户具有的权限可使用系统提供的DBA_SYS_PRIVSDBA_TAB_PRIVS视图。这些视图记录了用户具有的系统权限和对象权限。

    查询用户具有的系统权限:

    SELECT privilege FROM dba_sys_privs WHERE grantee = '用户名';
    

    查询用户具有的对象权限:

    SELECT privilege, owner, table_name FROM dba_tab_privs WHERE grantee = '用户名';
    

    注意:上述查询需要有DBA级别的权限,如果当前用户没有DBA权限,可使用相应的ALL_SYS_PRIVSALL_TAB_PRIVS视图来查询具有的权限。

  2. 查询用户的角色:用户可能通过角色间接具有权限,可以查询用户的角色来肯定具有的权限。

    查询用户所属的角色:

    SELECT granted_role FROM dba_role_privs WHERE grantee = '用户名';
    

    查询角色具有的权限:

    SELECT privilege FROM dba_sys_privs WHERE grantee IN (SELECT granted_role FROM dba_role_privs WHERE grantee = '用户名');
    

    注意:上述查询一样需要有DBA级别的权限,如果当前用户没有DBA权限,可使用相应的ALL_ROLE_PRIVSALL_SYS_PRIVS视图来查询。

  3. 查询用户直接授与的权限:可使用USER_SYS_PRIVSUSER_TAB_PRIVS视图查询用户直接授与的权限。

    查询用户直接具有的系统权限:

    SELECT privilege FROM user_sys_privs;
    

    查询用户直接具有的对象权限:

    SELECT privilege, owner, table_name FROM user_tab_privs;
    

    注意:上述查询只能查询当前用户直接具有的权限,没法查询其他用户具有的权限。

以上是查询用户具有的权限的一些经常使用方法,根据具体需求选择相应的方法进行查询。