PostgreSQL用户列表
我想获取psql中某个数据库的用户列表,例如“template0”。 谁是用户? 或者对于“template1”数据库: – 那里的用户是谁?
已经尝试:
\du+ -- no database is Listed not Users Select * from "pg_users"; -- no database is listed
用户实际上不是“对于数据库”,而是用于集群,并被授予访问数据库的不同权限。 要列出用户\du
应该做的,但你需要连接。 就像是
psql template1 -c '\du'
从命令行提示符应该这样做。 (或者在连接到数据库时从psql提示符input\du
)。
你必须明白,在PostgreSQL用户是每个数据库集群 。 @Michael已经演示了如何获得这些列表。
因此,除非使用REVOKE
和GRANT
显式限制特定数据库的权限,否则群集中的所有用户都可以基本访问群集中的任何数据库。
为了确定一个特定的用户是否实际上对数据库有特定的权限('CONNECT'):
has_database_privilege(user, database, privilege)
更多关于手册中的特权function 。
要确定特定数据库的所有特定权限:
SELECT datname, datacl FROM pg_database WHERE datname = 'mydb';
如果没有特定限制,您可以为datacl
获得NULL
。
除此之外,您还可以在pg_hba.conf
文件中限制每个数据库和每个用户的访问。 这是一个较低的水平。 用户甚至不能连接,如果pg_hba.conf
不会让他,即使数据库本身允许访问。
列出angular色/用户
从pg_rolesselectrolname;