2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不受支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1

52.8. pg_authid #

目录 pg_authid 包含有关数据库授权标识符(角色)的信息。一个角色涵盖了“用户”和“”的概念。用户本质上就是一个设置了 rolcanlogin 标志的角色。任何角色(无论是否设置 rolcanlogin)都可以拥有其他角色作为成员;请参阅 pg_auth_members

由于此目录包含密码,因此不能公开读取。 pg_roles 是一个对 pg_authid 的公开可读视图,该视图将密码字段置为空。

第 21 章 包含有关用户和权限管理的详细信息。

由于用户身份是集群范围内的,因此 pg_authid 在集群的所有数据库之间共享:每个集群只有一个 pg_authid 副本,而不是每个数据库一个。

表 52.8. pg_authid

列 类型

描述

oid oid

行标识符

rolname name

角色名称

rolsuper bool

角色拥有超级用户权限

rolinherit bool

角色自动继承其成员角色的权限

rolcreaterole bool

角色可以创建更多角色

rolcreatedb bool

角色可以创建数据库

rolcanlogin bool

角色可以登录。也就是说,此角色可以作为初始会话授权标识符给出。

rolreplication bool

角色是复制角色。复制角色可以发起复制连接,以及创建和删除复制槽。

rolbypassrls bool

角色绕过所有行级安全策略,有关更多信息,请参阅 第 5.9 节

rolconnlimit int4

对于可以登录的角色,此项设置该角色可以建立的并发连接的最大数量。-1 表示无限制。

rolpassword text

加密后的密码;如果没有则为 null。格式取决于所使用的加密形式。

rolvaliduntil timestamptz

密码过期时间(仅用于密码身份验证);如果没有过期时间则为 null


对于 MD5 加密的密码,rolpassword 列将以字符串 md5 开头,后跟一个 32 个字符的十六进制 MD5 哈希。MD5 哈希将是用户密码与其用户名拼接后的结果。例如,如果用户 joe 的密码是 xyzzyPostgreSQL 将存储 xyzzyjoe 的 md5 哈希。

警告

MD5 加密密码的支持已弃用,将在 PostgreSQL 的未来版本中移除。有关迁移到其他密码类型的详细信息,请参阅第 20.5 节

如果密码使用 SCRAM-SHA-256 加密,其格式为

SCRAM-SHA-256$<iteration count>:<salt>$<StoredKey>:<ServerKey>

其中 saltStoredKeyServerKey 为 Base64 编码格式。此格式与 RFC 5803 中指定的格式相同。

提交更正

如果您在文档中发现任何不正确之处、与您在使用特定功能时的实际体验不符之处,或者需要进一步说明之处,请使用 此表单 来报告文档问题。