如何查看授予另一个用户模式的权限

28

考虑以下情况:在一个数据库中,我有两个用户A和B及其相应的模式。

我想知道的是,如何获取信息:用户A在模式B中有哪些权限。

考虑以下情况:我们有两个用户及其关联的模式。我们有用户A和用户B。在A中,假设我们有TB1 TB2,在B中,假设我们有TBa TBb。现在我想知道如何找到用户A在模式B上拥有哪些特权。

例如:用户A正在编写:select * from B.TBb 这意味着用户A正在访问用户B的表,因此,它显示他具有SELECT权限。 我想知道用户A在模式B上拥有哪些全部特权。

应该执行哪个查询以获取用户A在模式B上拥有的特权列表。


考虑以下情况: 我们有两个用户及其相关的模式。 我们有用户a和用户b 在A中,假设我们有TB1 TB2 在B中,假设我们有TBa TBb 现在我想知道如何查找User A在Schema B上拥有哪些特权。例如:用户A正在写: select * from B. TBb这意味着用户A正在访问用户B的表 因此,它显示他具有SELECT权限。我想知道用户A在模式B上有哪些所有权限。 是否有任何查询可以实现此目的。希望问题对您清晰明了。 - Bharti Pandita
您可以编辑自己的问题。请这样做,而不是在评论中发布其他信息。 - APC
谁在运行这个假设查询:用户A、用户B还是DBA用户X? - APC
3个回答

35

您可以使用以下查询:

select * from all_tab_privs;
select * from dba_sys_privs;
select * from dba_role_privs;

这些表中每个都有一个grantee列,您可以在where条件中过滤它:

每个表都有一个grantee列,您可以在where条件中对其进行过滤。

where grantee = 'A'

为了查询其他模式中对象(例如表)的权限,我首先建议使用 all_tab_privs,它还有一个 table_schema 列。

如果您以与要查询的权限相同的用户登录,则可以使用 user_tab_privsuser_sys_privsuser_role_privs。它们可以由普通非DBA用户查询。


3

使用来自Szilágyi Donát的帖子中的示例。

我使用了两个查询,一个用于知道我拥有什么角色,但不包括连接授权:

SELECT * FROM USER_ROLE_PRIVS WHERE GRANTED_ROLE != 'CONNECT'; -- 当前Oracle模式的角色

现在我想找到我的架构/用户具有哪些权限/角色;我的角色ROLE_VIEW_PAYMENTS和ROLE_OPS_CUSTOMERS的示例。但要查找特定角色的表格/对象,我使用了以下语句:

SELECT * FROM ALL_TAB_PRIVS WHERE GRANTEE='ROLE_OPS_CUSTOMERS'; -- 授予角色的对象。

此示例的所有者模式可能是PRD_CUSTOMERS_OWNER(或角色/模式本身)。

谢谢。


0

登录数据库,然后运行以下查询:

select * from dba_role_privs where grantee = 'SCHEMA_NAME';

列出授予模式的所有角色。

感谢Szilagyi Donat提供的答案。这个是从同样的地方获取的,只是添加了where子句。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接