我如何列出一个用户获得的所有授权?

24 浏览
0 Comments

我如何列出一个用户获得的所有授权?

我需要查看Oracle数据库上的所有授权。

我使用了TOAD功能来比较模式,但它不显示临时表授权等等,所以我的问题是:

我如何列出Oracle数据库上的所有授权?

admin 更改状态以发布 2023年5月21日
0
0 Comments

假设您想要列出某个用户接收的所有对象上的授权:

select * from all_tab_privs_recd where grantee = 'your user'

这不会返回用户拥有的对象。如果需要这些,请使用all_tab_privs视图。

0
0 Comments

如果你需要更多的授权(例如,通过角色授权,系统权限(如选择任何表),等等),以下是一些额外的查询:

用户的系统权限:

SELECT PRIVILEGE
  FROM sys.dba_sys_privs
 WHERE grantee = 
UNION
SELECT PRIVILEGE 
  FROM dba_role_privs rp JOIN role_sys_privs rsp ON (rp.granted_role = rsp.role)
 WHERE rp.grantee = 
 ORDER BY 1;

直接授权给表 / 视图:

SELECT owner, table_name, select_priv, insert_priv, delete_priv, update_priv, references_priv, alter_priv, index_priv 
  FROM table_privileges
 WHERE grantee = 
 ORDER BY owner, table_name;

间接授权给表 / 视图:

SELECT DISTINCT owner, table_name, PRIVILEGE 
  FROM dba_role_privs rp JOIN role_tab_privs rtp ON (rp.granted_role = rtp.role)
 WHERE rp.grantee = 
 ORDER BY owner, table_name;

0