首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在oracle中显示用户的所有权限?

如何在oracle中显示用户的所有权限?
EN

Stack Overflow用户
提问于 2012-03-22 03:39:24
回答 3查看 492.4K关注 0票数 120

有人能告诉我如何在sql-console中显示特定用户的所有权限/规则吗?

EN

回答 3

Stack Overflow用户

发布于 2012-03-22 04:12:31

有各种各样的脚本可以做到这一点,这取决于你想要变得多么疯狂。我个人会使用Pete Finnigan的find_all_privs script

如果你想自己写,查询就会变得相当有挑战性。用户可以被授予在DBA_SYS_PRIVS中可见的系统权限。他们可以被授予在DBA_TAB_PRIVS中可见的对象权限。他们可以被授予在DBA_ROLE_PRIVS中可见的角色(角色可以是默认的或非默认的,也可以需要密码,所以仅仅因为用户被授予了角色并不意味着用户一定可以使用默认情况下通过角色获得的权限)。但是,这些角色可以依次被授予系统权限、对象权限和其他角色,这些角色可以通过查看ROLE_SYS_PRIVSROLE_TAB_PRIVSROLE_ROLE_PRIVS来查看。Pete的脚本遍历了这些关系,以显示最终流向用户的所有特权。

票数 21
EN

Stack Overflow用户

发布于 2020-11-06 15:22:42

更简单的单查询oracle版本。

代码语言:javascript
复制
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; 
票数 2
EN

Stack Overflow用户

发布于 2017-06-20 18:19:20

您可以使用以下代码来获取所有用户的所有权限列表。

代码语言:javascript
复制
select * from dba_sys_privs 
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9811670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档