PostgreSQL 用户列表

发布于 2024-12-28 06:02:29 字数 214 浏览 3 评论 0原文

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

已经尝试过:

\du+  -- no database is Listed not Users
Select * from "pg_users";  -- no database is listed

I want to get a list of users for a certain database in psql - for example "template0". Who are the users? Or for "template1" database: - who are the users there?

Already tried:

\du+  -- no database is Listed not Users
Select * from "pg_users";  -- no database is listed

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

做个ˇ局外人 2025-01-04 06:02:29

用户实际上并不是“为了数据库”,他们是为了集群,并被授予不同的访问数据库的权限。要列出用户 \du 应该可以,但您需要连接。类似

psql template1 -c '\du'

命令行提示符的操作应该可以。 (或连接到数据库时 psql 提示符下的 \du)。

User aren't actually, "for the database", they're for cluster and are given different permissions to access databases. To list users \du should do, but you need to be connected. Something like

psql template1 -c '\du'

from the command line prompt should do. (or \du from psql prompt when you are connected to the database).

樱桃奶球 2025-01-04 06:02:29

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

因此,除非您使用 REVOKE< 明确限制特定数据库的权限/code>GRANT,集群中的所有用户都具有对集群中任何数据库的基本访问权限。

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

has_database_privilege(user, database, privilege)

有关手册中的权限函数

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

SELECT datname, datacl
FROM   pg_database
WHERE  datname = 'mydb';

如果没有应用特定限制,您将获得dataclNULL


除此之外,您还可以在 pg_hba.conf 文件。那是较低的水平。如果 pg_hba.conf 不允许用户连接,即使数据库本身允许访问,用户甚至无法连接。

You must understand that in PostgreSQL users are per database cluster. @Michael already demonstrates how to get a list of those.

So, unless you restrict permissions for a particular databases explicitly with REVOKE and GRANT, all users in the cluster have basic access to any database in the cluster.

To determine, whether a specific user actually has a certain privilege ('CONNECT') for a database:

has_database_privilege(user, database, privilege)

More about privilege functions in the manual.

To determine all specific privileges for a specific database:

SELECT datname, datacl
FROM   pg_database
WHERE  datname = 'mydb';

You get NULL for datacl if no specific restrictions apply.


In addition to that you can restrict access per database and per user in the pg_hba.conf file. That's on a lower level. The user cannot even connect, if pg_hba.conf won't let him, even if the database itself would allow access.

调妓 2025-01-04 06:02:29

要列出角色/用户,

请从 pg_roles 中选择 rolname;

To list roles/user

select rolname from pg_roles;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文