如何在PostgreSQL中查看有哪些用户和用户权限

 更新时间:2025年10月31日 09:54:18   作者:小精灵DBA  
对于数据库来说,用户以及权限管理非常重要,让不用的用户具有不同的权限集合,将会显著的避免误操作,这篇文章主要介绍了在PostgreSQL中查看有哪些用户和用户权限的相关资料,需要的朋友可以参考下

在 PostgreSQL 中查看用户(在 PostgreSQL 中,用户和角色是同一个概念,ROLE)主要有以下几种方法。

方法一:使用 SQL 命令查询系统目录(推荐)

这是最常用和最灵活的方法。用户信息主要存储在 pg_catalog.pg_roles 系统目录中。

1. 查看所有用户/角色(基本信息)

SELECT rolname AS username, 
       rolsuper AS is_superuser,
       rolcanlogin AS can_login,
       rolcreatedb AS can_create_db,
       rolcreaterole AS can_create_roles,
       rolreplication AS can_do_replication
FROM pg_roles
ORDER BY rolname;

字段解释:

  • rolname: 用户名。
  • rolsuper: 是否是超级用户(t 表示是,f 表示否)。
  • rolcanlogin: 是否有登录权限(即能否作为客户端连接数据库)。具有登录权限的角色才通常被称为“用户”
  • rolcreatedb: 是否有创建数据库的权限。
  • rolcreaterole: 是否有创建其他角色的权限。
  • rolreplication: 是否有流复制的权限。

2. 仅查看具有登录权限的用户(常用)

我们通常更关心能登录数据库的用户。

SELECT usename AS username, 
       usesuper AS is_superuser,
       usecreatedb AS can_create_db,
       usecreaterole AS can_create_roles,
       usesysid AS user_id
FROM pg_user
ORDER BY usename;

pg_userpg_roles 的一个便于查看的视图,它默认只显示具有登录权限的角色。

3. 查看更详细的信息(包括权限、属性等)

SELECT * FROM pg_roles WHERE rolcanlogin = true ORDER BY rolname;

这会列出所有能登录的角色的所有属性,包括账户有效期、连接限制等。

方法二:使用元命令(在 psql 命令行工具中)

如果你正在使用 PostgreSQL 的交互式命令行工具 psql,可以使用快捷的元命令(以反斜杠 \ 开头的命令)。

1. 列出所有角色/用户

\du

或者更详细的版本:

\du+

\du\df 用于函数,\dt 用于表一样,是用于用户的元命令。

2. 列出所有用户(等同于SELECT * FROM pg_user;)

\dg

在 PostgreSQL 中,\du\dg 是等价的,都可以用来列出角色。

方法三:查看用户属性(如密码有效期、连接限制)

如果你想查看用户更具体的属性配置,可以查询 pg_shadow 系统目录。注意:通常只有超级用户才能查看此视图,因为它包含密码哈希(以md5或SCRAM形式加密存储)。

SELECT usename AS username,
       passwd AS password_hash, -- 敏感信息,通常以md5或SCRAM开头
       valuntil AS password_expires_at,
       useconfig AS session_defaults
FROM pg_shadow
WHERE usename = 'your_username'; -- 可以指定要查看的用户名

字段解释:

  • passwd: 加密后的密码。如果是 ********,则表示密码已被加密,无法直接查看明文。
  • valuntil: 密码失效时间(账户有效期)。
  • useconfig: 该用户会话的默认运行时配置(例如,{search_path=myschema, work_mem=16MB})。

示例输出解读

执行 \du 后,你可能会看到如下结果:

                                          List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 admin     | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 app_user  | Create DB                                                  | {readonly_group}
 bob       | Password valid until 2024-12-31                            | {}
 readonly  | Cannot login                                               | {}
  • admin: 这是一个超级用户,拥有所有最高权限。
  • app_user: 这是一个普通用户,拥有创建数据库的权限,并且是 readonly_group 角色的成员。
  • bob: 这是一个普通用户,他的密码将在 2024 年底失效。
  • readonly: 这是一个角色Cannot login),不能直接登录,通常被授予其他用户以实现权限分组。

总结

你的需求使用的命令(SQL)使用的元命令(psql 中)
快速查看所有用户及其主要权限SELECT * FROM pg_user;\du\dg
查看所有角色(包括不能登录的)SELECT rolname, rolcanlogin FROM pg_roles;\du
查看更详细的角色属性SELECT * FROM pg_roles;\du+
查看用户的密码和有效期(需超级用户)SELECT * FROM pg_shadow;无直接元命令

对于日常管理,最常用的是 \du 元命令,因为它简单快捷。在脚本或需要程序化处理时,则使用 SELECT ... FROM pg_roles 或 pg_user 的 SQL 查询方式。

到此这篇关于如何在PostgreSQL中查看有哪些用户和用户权限的文章就介绍到这了,更多相关PostgreSQL查看用户和用户权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • postgresql无序uuid性能测试及对数据库的影响

    postgresql无序uuid性能测试及对数据库的影响

    小编最近在做一个超大表的性能测试,在过程中发现无序uuid做主键对表插入性能有些影响,纠结该怎么处理这一问题呢?接下来小编给大家分享postgresql无序uuid性能测试的相关知识帮助大家学习,需要的彭参考下吧
    2021-06-06
  • PostgreSQL function返回多行的操作

    PostgreSQL function返回多行的操作

    这篇文章主要介绍了PostgreSQL function返回多行的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 在PostgreSQL中使用ltree处理层次结构数据的方法

    在PostgreSQL中使用ltree处理层次结构数据的方法

    这篇文章主要介绍了在PostgreSQL中使用ltree处理层次结构数据,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Postgresql数据库中的json类型字段使用示例详解

    Postgresql数据库中的json类型字段使用示例详解

    JSON的主要用于在服务器与web应用之间传输数据,这篇文章主要介绍了Postgresql数据库中的json类型字段使用,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • postgresql 实现获取所有表名,字段名,字段类型,注释

    postgresql 实现获取所有表名,字段名,字段类型,注释

    这篇文章主要介绍了postgresql 实现获取所有表名,字段名,字段类型,注释操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL 向量扩展插件pgvector安装和使用

    PostgreSQL 向量扩展插件pgvector安装和使用

    本文主要介绍了PostgreSQL 向量扩展插件pgvector安装和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-05-05
  • PostgreSQL pg_archivecleanup与清理archivelog的操作

    PostgreSQL pg_archivecleanup与清理archivelog的操作

    这篇文章主要介绍了PostgreSQL pg_archivecleanup与清理archivelog的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL如何查询表结构和索引信息

    PostgreSQL如何查询表结构和索引信息

    文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`\d`元命令、系统数据字典查询以及使用可视化工具DBeaver
    2024-12-12
  • 解决sqoop从postgresql拉数据,报错TCP/IP连接的问题

    解决sqoop从postgresql拉数据,报错TCP/IP连接的问题

    这篇文章主要介绍了解决sqoop从postgresql拉数据,报错TCP/IP连接的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • PostgreSQL表分区的三种方式和操作方法

    PostgreSQL表分区的三种方式和操作方法

    在 PostgreSQL 中,处理数据的分区表的分区数量和大小的平衡是一个非常重要的问题,这篇文章主要介绍了PostgreSQL表分区的三种方式和操作方法,需要的朋友可以参考下
    2025-10-10

最新评论