如何查看用户的 CONNECT 等数据库级别权限?
我已经找到了两种方法,但都不是完美的:
使用功能has_database_privilege()
。
这可行,但我必须为每个用户一一手动运行它:
SELECT has_database_privilege('david', 'postgres', 'connect');
Run Code Online (Sandbox Code Playgroud)
这似乎返回了不完整的结果。它NULL
首先返回,但david
其他用户仍然可以连接到postgres
数据库。仅当我在该数据库上运行任何GRANT
命令(当然还有REVOKE
)之后,该表才会填充一些结果:{=Tc/postgres,postgres=CTc/postgres}
。所以我想我每次使用这种方法之前都必须GRANT
这样做?REVOKE
SELECT datname as "Relation",
datacl as "Permissions"
FROM pg_database
WHERE datname = 'postgres';
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 上使用 PostgreSQL 10.9