PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

52.8. pg_authid #

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

由于该目录包含口令,它不能是公开可读的。 pg_roles 是 pg_authid 上一个公开可读的视图, 它会把口令字段隐去。

Chapter 21 包含关于用户和特权管理的详细信息。

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

Table 52.8. \1 字段列说明

Column Type

Description

oid oid

Row identifier

rolname name

Role name

rolsuper bool

角色拥有超级用户特权

rolinherit bool

角色自动继承其作为成员的角色的特权

rolcreaterole bool

角色可以创建更多角色

rolcreatedb bool

角色可以创建数据库

rolcanlogin bool

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

rolreplication bool

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

rolbypassrls bool

角色绕过所有行级安全策略,更多信息见 Section 5.9。

rolconnlimit int4

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

rolpassword text

加密的密码;如果没有则为空值。其格式取决于所使用的加密方式。

rolvaliduntil timestamptz

密码过期时间(仅用于密码认证);如果没有过期时间则为空值


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

Warning

对 MD5 加密口令的支持已被弃用,并将在 PostgreSQL 的未来版本中被移除。有关迁移到其他口令类型的详情, 参阅 Section 20.3.2。

如果口令是用 SCRAM-SHA-256 加密的,则它具有如下格式:

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

其中 salt、StoredKey 和 ServerKey 均为 Base64 编码格式。 此格式与 RFC 5803 规定的格式相同。