Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann ich ALLE Grants auflisten, die ein Benutzer erhalten hat?

Wenn Sie mehr als nur direkte Tabellenzuweisungen wünschen (z. B. Zuweisungen über Rollen, Systemprivilegien wie die Auswahl einer beliebigen Tabelle usw.), finden Sie hier einige zusätzliche Abfragen:

Systemrechte für einen Benutzer:

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

Direkte Zuweisungen an Tabellen/Ansichten:

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

Indirekte Zuweisungen an Tabellen/Ansichten:

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 = <theUser>
 ORDER BY owner, table_name;