sql >> Databáze >  >> RDS >> Oracle

Jak mohu uvést VŠECHNY granty, které uživatel obdržel?

Pokud chcete více než jen přímé udělování tabulek (např. udělování prostřednictvím rolí, systémová oprávnění, jako je výběr libovolné tabulky atd.), zde jsou některé další dotazy:

Systémová oprávnění pro uživatele:

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;

Přímé granty pro tabulky/pohledy:

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;

Nepřímá povolení k tabulkám/pohledům:

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;


  1. Běžné úkoly Postgres na CentOS 7

  2. SQL ROWNUM, jak vrátit řádky mezi určitým rozsahem

  3. jak nahradit více řetězců dohromady v Oracle

  4. Pokud je zadáno SELECT DISTINCT, položky ORDER BY se musí objevit ve výběrovém seznamu