76

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

\dp\dp mytablename

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

4

3 回答 3

141

您可以table_privileges在信息模式中查询表:

SELECT table_catalog, table_schema, table_name, privilege_type
FROM   information_schema.table_privileges 
WHERE  grantee = 'MY_USER'
于 2014-11-13T20:18:16.580 回答
5

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

# 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;
于 2020-08-09T17:12:29.337 回答
3

也可以使用它来列出 Grantee 并删除 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');
于 2020-09-07T03:07:37.837 回答