【问题标题】:How to see what privileges are granted to schema of another user如何查看授予其他用户架构的权限
【发布时间】:2013-01-30 12:57:11
【问题描述】:

考虑这种情况:在一个数据库中,我有两个用户 A 和 B 以及他们对应的架构。

我想知道,如何获取信息:架构 B 中的 USER A 有哪些权限。

考虑这种情况:我们有两个用户及其关联的方案。我们有用户 A 和用户 B。在 A 中,假设我们有 TB1 TB2,在 B 中,假设我们有 TBa,TBb。现在我想知道如何找到用户 A 对 Schema B 的权限。

例如:用户 A 正在写:select * from B.TBb 这意味着用户 A 正在访问用户 B 的表,因此表明他具有 SELECT 权限。我想知道用户 A 对架构 B 的所有权限。

应执行哪个查询以获取用户 A 在架构 B 上的权限列表。

【问题讨论】:

  • 考虑这种情况:我们有两个用户及其关联的方案。我们在 A 中有用户 a 和用户 b,假设 B 中有 TB1 TB2,假设我们有 TBa,TBb 现在我想知道如何找到用户 A 在架构 B 上的权限。例如:用户 A 正在写: select * from B. TBb 表示用户 A 正在访问用户 B 的表,因此,它表明他具有 SELECT 权限 我想知道用户 A 在架构 B 上的所有权限。是否有任何查询。希望,你的问题很清楚。
  • 您可以编辑您自己的问题。请这样做,而不是以 cmets 的形式发布其他信息。
  • 谁在运行这个假定的查询:用户 A、用户 B 或用户 X,谁是 DBA?

标签: oracle


【解决方案1】:

您可以使用这些查询:

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

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

where grantee = 'A'

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

如果您使用要查询其权限的同一用户登录,则可以使用user_tab_privs、user_sys_privs、user_role_privs。普通的非 dba 用户可以查询它们。

【讨论】:

    【解决方案2】:

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

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

    SELECT * FROM USER_ROLE_PRIVS WHERE GRANTED_ROLE != 'CONNECT'; -- Roles of the actual Oracle Schema

    知道我喜欢查找我的架构/用户拥有的权限/角色;我的角色 ROLE_VIEW_PAYMENTS 和 ROLE_OPS_CUSTOMERS 的示例。但是要找到我使用的特定角色的表/对象:

    SELECT * FROM ALL_TAB_PRIVS WHERE GRANTEE='ROLE_OPS_CUSTOMERS'; -- Objects granted at role.

    此示例的所有者架构可以是 PRD_CUSTOMERS_OWNER(或角色/架构本身)。

    问候。

    【讨论】:

      【解决方案3】:

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

      select * from dba_role_privs where grantee = 'SCHEMA_NAME';

      将列出授予架构的所有角色。

      感谢Szilagyi Donat 的回答。这个取自相同的,只是添加了 where 子句。

      【讨论】:

        猜你喜欢
        • 2019-10-03
        • 2011-03-07
        • 2013-09-14
        • 2013-10-14
        • 1970-01-01
        • 1970-01-01
        • 2014-11-08
        • 1970-01-01
        • 2011-03-24
        相关资源
        最近更新 更多