如何查找Oracle中用户被授予的权限和角色?

17 浏览
0 Comments

如何查找Oracle中用户被授予的权限和角色?

我正在使用Linux和Oracle10g。\n我创建了一个名为test的用户,并向该用户授予了创建会话和选择任何字典的权限。\n我还将sysdba和sysoper角色授予了相同的用户。\n现在我想显示授予该用户的所有权限和角色。\n我找到了以下查询,但它只显示了创建会话和选择字典的权限。\n

select privilege 
from dba_sys_privs 
where grantee='SAMPLE' 
order by 1;

\n请帮助解决这个问题。\n谢谢

0
0 Comments

问题的出现原因:

其他答案没有解决我的问题,所以我自己编写了解决方案。

解决方法:

在Oracle 11g中,可以使用以下查询语句来查找授予用户的权限和角色:

授予的角色:

SELECT * 
FROM DBA_ROLE_PRIVS 
WHERE GRANTEE = 'USER';

直接授予用户的权限:

SELECT * 
FROM DBA_TAB_PRIVS 
WHERE GRANTEE = 'USER';

授予给用户的角色所拥有的权限:

SELECT * 
FROM DBA_TAB_PRIVS  
WHERE GRANTEE IN (SELECT granted_role 
                  FROM DBA_ROLE_PRIVS 
                  WHERE GRANTEE = 'USER');

授予的系统权限:

SELECT * 
FROM DBA_SYS_PRIVS 
WHERE GRANTEE = 'USER';

如果要查找当前连接的用户,可以将表名中的DBA替换为USER,并移除WHERE子句。

这就是最佳答案了。谢谢。

还有一个补充的查询语句,用于查找授予给用户角色所拥有的系统权限:

SELECT * 
FROM DBA_SYS_PRIVS 
WHERE GRANTEE IN (SELECT granted_role 
                  FROM DBA_ROLE_PRIVS 
                  WHERE GRANTEE = 'DWMGR');

0
0 Comments

如何在Oracle中查找用户被授予的权限和角色?

在Oracle中,要查找用户被授予的权限和角色,可以执行以下步骤:

1. 查看Oracle官方文档中的链接:http://docs.oracle.com/cd/B10501_01/server.920/a96521/privs.htm#15665。

2. 使用以下查询语句检查USER_SYS_PRIVS、USER_TAB_PRIVS和USER_ROLE_PRIVS表:

SELECT * FROM USER_SYS_PRIVS;

SELECT * FROM USER_TAB_PRIVS;

SELECT * FROM USER_ROLE_PRIVS;

3. 简单来说,执行SELECT * FROM这些表的查询语句。不要偷懒,我会因为不看到代码而感到沮丧。并非每个人都能准确理解你的语法,而且文档链接可能会发生变动。

对于那些懒惰的人,可以直接执行以下查询语句:

SELECT * FROM USER_SYS_PRIVS;

SELECT * FROM USER_TAB_PRIVS;

SELECT * FROM USER_ROLE_PRIVS;

如果你是一个像我一样想要查找数据库中"whatever"被授予的角色的人,那么USER_ROLE_PRIVS对你来说不适用,因为根据Oracle文档的说法,"USER_ROLE_PRIVS描述的是当前用户被授予的角色"。相反,你应该在DBA_ROLE_PRIVS视图中查找信息。为什么呢?因为"DBA_ROLE_PRIVS描述的是数据库中所有用户和角色被授予的角色"。

0
0 Comments

问题的出现原因是用户想要知道在Oracle中授予了哪些特权和角色给一个用户。为了解决这个问题,用户可以执行以下查询语句:

select * from USER_ROLE_PRIVS where USERNAME='SAMPLE';
select * from USER_TAB_PRIVS where Grantee = 'SAMPLE';
select * from USER_SYS_PRIVS where USERNAME = 'SAMPLE';

其中,`SAMPLE`是用户的名称,用户可以根据需要将其替换为其他用户名。此外,如果用户想要获取当前已登录用户的信息,可以将`SAMPLE`替换为`user`。

需要注意的是,如果用户使用`dba_XXX_privs`表进行查询,列名将会是`grantee`而不是`username`。

0