Postgresql 中文操作指南

53.8. pg_authid #

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

由于此目录包含密码,因此它不能公开读取。 pg_rolespg_authid 中一个可公开读取的视图,其中将密码字段留空。

Chapter 22提供了有关用户和权限管理的详细信息。

由于用户标识在整个集群,pg_authid 在集群的所有数据库中共享:每个集群只有一份 pg_authid,而不是每个数据库一份。

Table 53.8. pg_authid Columns

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.8

rolconnlimit int4 对于可以登录的角色,此项设置此角色可以进行的最大并发连接数。-1 表示无限制。

rolpassword text 密码(可能是加密的);如果没有,则为 null。格式取决于使用的加密形式。

rolvaliduntil timestamptz 密码过期时间(仅用于密码身份验证);如果没有过期时间,则为 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指定的格式相同。

假设不符合这两种格式的密码是未加密的密码。