有人能告诉我如何在sql-console中显示特定用户的所有权限/规则吗?
发布于 2012-03-22 04:12:31
有各种各样的脚本可以做到这一点,这取决于你想要变得多么疯狂。我个人会使用Pete Finnigan的find_all_privs script。
如果你想自己写,查询就会变得相当有挑战性。用户可以被授予在DBA_SYS_PRIVS
中可见的系统权限。他们可以被授予在DBA_TAB_PRIVS
中可见的对象权限。他们可以被授予在DBA_ROLE_PRIVS
中可见的角色(角色可以是默认的或非默认的,也可以需要密码,所以仅仅因为用户被授予了角色并不意味着用户一定可以使用默认情况下通过角色获得的权限)。但是,这些角色可以依次被授予系统权限、对象权限和其他角色,这些角色可以通过查看ROLE_SYS_PRIVS
、ROLE_TAB_PRIVS
和ROLE_ROLE_PRIVS
来查看。Pete的脚本遍历了这些关系,以显示最终流向用户的所有特权。
发布于 2020-11-06 15:22:42
更简单的单查询oracle版本。
WITH data
AS (SELECT granted_role
FROM dba_role_privs
CONNECT BY PRIOR granted_role = grantee
START WITH grantee = '&USER')
SELECT 'SYSTEM' typ,
grantee grantee,
privilege priv,
admin_option ad,
'--' tabnm,
'--' colnm,
'--' owner
FROM dba_sys_privs
WHERE grantee = '&USER'
OR grantee IN (SELECT granted_role
FROM data)
UNION
SELECT 'TABLE' typ,
grantee grantee,
privilege priv,
grantable ad,
table_name tabnm,
'--' colnm,
owner owner
FROM dba_tab_privs
WHERE grantee = '&USER'
OR grantee IN (SELECT granted_role
FROM data)
ORDER BY 1;
发布于 2017-06-20 18:19:20
您可以使用以下代码来获取所有用户的所有权限列表。
select * from dba_sys_privs
https://stackoverflow.com/questions/9811670
复制相似问题