PostgreSQL用户列表

PostgreSQL用户列表,postgresql,privileges,psql,Postgresql,Privileges,Psql,我想获得psql中某个数据库的用户列表-例如“template0”。用户是谁?或者对于“template1”数据库:-那里的用户是谁 已尝试: \du+ -- no database is Listed not Users Select * from "pg_users"; -- no database is listed 用户实际上并不是“为了数据库”,而是为了集群,并被授予访问数据库的不同权限。要列出用户,\du应该这样做,但您需要连接。差不多 psql template1 -c '\

我想获得psql中某个数据库的用户列表-例如“template0”。用户是谁?或者对于“template1”数据库:-那里的用户是谁

已尝试:

\du+  -- no database is Listed not Users
Select * from "pg_users";  -- no database is listed
用户实际上并不是“为了数据库”,而是为了集群,并被授予访问数据库的不同权限。要列出用户,
\du
应该这样做,但您需要连接。差不多

psql template1 -c '\du'

从命令行提示符下执行。(或连接到数据库时从psql提示符中选择
\du

您必须了解,在PostgreSQL中,每个数据库集群的用户都是@Michael已经演示了如何获取这些列表

因此,除非您使用和
GRANT
明确限制特定数据库的权限,否则群集中的所有用户都可以基本访问群集中的任何数据库

要确定特定的用户是否实际拥有数据库的特定权限(“连接”):

has_database_privilege(user, database, privilege)
更多关于

要确定特定数据库的所有特定权限

SELECT datname, datacl
FROM   pg_database
WHERE  datname = 'mydb';
如果没有特定的限制,则
datacl
将获得
NULL


除此之外,您还可以限制文件中每个数据库和每个用户的访问权限。那是在一个较低的层次上。用户甚至无法连接,如果
pg_hba.conf
不允许,即使数据库本身允许访问。

列出角色/用户


从pg_角色中选择rolname

另外请注意,在最新版本上,您可以向db授予/撤销连接权限。