【问题标题】:Check Postgres access for a user检查用户的 Postgres 访问权限
【发布时间】:2015-01-11 02:34:59
【问题描述】:

我查看了GRANT 的文档,找到了here,我试图查看是否有一个内置函数可以让我查看数据库中的可访问性级别。当然有:

\dp\dp mytablename

但这并没有显示我的帐户可以访问的内容。我想查看我可以访问的所有表格。谁能告诉我是否有命令可以检查我在 Postgres 中的访问级别(我是否有 SELECTINSERTDELETEUPDATE 权限)?如果是这样,该命令是什么?

【问题讨论】:

  • \du?,或者直接查询information_schema中的grants表。

标签: postgresql privileges data-dictionary


【解决方案1】:

您可以在信息架构中查询table_privileges 表:

SELECT table_catalog, table_schema, table_name, privilege_type
FROM   information_schema.table_privileges 
WHERE  grantee = 'MY_USER'

【讨论】:

  • 而且你只能看到你的数据库用户被允许看到的行。
【解决方案2】:

对于特定数据库上的所有用户,请执行以下操作:

# psql
\c your_database
select grantee, table_catalog, privilege_type, table_schema, table_name from information_schema.table_privileges order by grantee, table_schema, table_name;

【讨论】:

    【解决方案3】:

    也使用它来列出受赠者并删除 Postgres PaaS Azure 的(PG_monitor 和 Public)。

    SELECT grantee,table_catalog, table_schema, table_name, privilege_type
    FROM   information_schema.table_privileges 
    WHERE  grantee not in ('pg_monitor','PUBLIC');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      相关资源
      最近更新 更多