51.8. pg_authid

目录pg_authid包含有关数据库授权标识符(角色)的信息。角色包含“用户”和“组”的概念。用户本质上只是设置了rolcanlogin标志的角色。任何角色(具有rolcanlogin或不具有rolcanlogin)都可以具有其他角色作为成员。参见pg_auth_members

由于该目录包含密码,因此不得公开读取。 pg_rolespg_authid上的公共可读视图,该视图空白了密码字段。

Chapter 21包含有关用户和特权 Management 的详细信息。

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

表 51.8. pg_authid

NameTypeDescription
oidoid行标识符(隐藏属性;必须显式选择)
rolnamenameRole name
rolsuperbool角色具有超级用户权限
rolinheritbool角色自动继承其所属角色的特权
rolcreaterolebool角色可以创建更多角色
rolcreatedbbool角色可以创建数据库
rolcanloginbool角色可以登录。也就是说,可以将此角色作为初始会话授权标识符
rolreplicationbool角色是复制角色。复制角色可以启动复制连接并创建和删除复制插槽。
rolbypassrlsbool角色绕过每个行级安全策略,有关更多信息,请参见Section 5.7
rolconnlimitint4对于可以登录的角色,这设置了该角色可以构建的最大并发连接数。 -1 表示没有限制。
rolpasswordtext密码(可能已加密);如果没有,则为 null。格式取决于所使用的加密形式。
rolvaliduntiltimestamptz密码到期时间(仅用于密码验证);如果没有到期,则返回 null

对于 MD5 加密密码,rolpassword列将以字符串md5开头,后跟 32 个字符的十六进制 MD5 哈希。 MD5 哈希将是与用户名关联的用户密码。例如,如果用户joe的密码为xyzzy,则 PostgreSQL 将存储xyzzyjoe的 md5 哈希值。

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

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

其中* salt StoredKey ServerKey *为 Base64 编码格式。此格式与 RFC 5803 指定的格式相同。

假定不遵循这两种格式的密码都是未加密的。