如何枚举授予 Oracle 角色的权限列表?
Posted
技术标签:
【中文标题】如何枚举授予 Oracle 角色的权限列表?【英文标题】:How can I enumerate the list of privileges granted to an Oracle role? 【发布时间】:2011-01-25 23:42:47 【问题描述】:我有一个很久以前创建的本土 Oracle 角色:
create role MyRole;
它已被授予从某些表和视图中选择、插入、更新和删除的能力。
grant select on sometable to MyRole;
grant insert on sometable to MyRole;
grant select on someothertable to MyRole;
-- etc.
我现在如何枚举授予该角色的特定权限列表?我有兴趣发现特定表以及此角色对每个表的权限。我怎样才能恢复这些信息?
【问题讨论】:
【参考方案1】:您可以简单地从数据字典ROLE_TAB_PRIVS
中搜索。并这样做
SELECT * FROM ROLE_TAB_PRIVS WHERE ROLE = 'MyRole';
【讨论】:
【参考方案2】:这很好用:
SELECT DBA_TAB_PRIVS.GRANTEE, TABLE_NAME, PRIVILEGE,DBA_ROLE_PRIVS.GRANTEE
FROM DBA_TAB_PRIVS, DBA_ROLE_PRIVS
WHERE DBA_TAB_PRIVS.GRANTEE = DBA_ROLE_PRIVS.GRANTED_ROLE
AND DBA_TAB_PRIVS.GRANTEE='<ENTER GROUP ROLE HERE>'
AND DBA_ROLE_PRIVS.GRANTEE = '<ENTER ROLE HERE>'
ORDER BY DBA_ROLE_PRIVS.GRANTEE
【讨论】:
以上是关于如何枚举授予 Oracle 角色的权限列表?的主要内容,如果未能解决你的问题,请参考以下文章