【发布时间】: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
我正在寻找一个列出所有有权访问特定数据库的用户的查询。希望与此类似,但要查询 Oracle 数据库。 SQL Server query to find all permissions/access for all users in a database
【问题讨论】:
标签: sql oracle database-permissions
Oracle 的数据库管理员 (DBA) 只需执行查询即可查看 DBA_SYS_PRIVS、DBA_TAB_PRIVS 和 DBA_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。
【讨论】:
查询哪个用户被授予system privilege,例如DEBUG ANY PROCEDURE、ON COMMIT REFRESH、INSERT ANY TABLE、CREATE ANY JOB、FLASHBACK ANY TABLE ...等。
select p.* from dba_sys_privs p where p.grantee = upper('<your_user_name>');
查询DML、EXECUTION、DEBUG对象的权限,例如TABLE、VIEW、PROCEDURE、FUNCTION ...等
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>');
可以使用。
【讨论】: