目录pg_authid包含关于数据库授权标识符(角色)的信息。角色把“用户”和“组”的概念包含在内。一个用户实际上就是一个rolcanlogin标志被设置的角色。任何角色(不管rolcanlogin设置与否)都能够把其他角色作为成员,参见pg_auth_members

由于这个目录包含口令,它不能是公共可读的。pg_roles是在pg_authid上的一个公共可读视图,它隐去了口令域。

由于用户标识符是集簇范围的,pg_authid在一个集簇的所有数据库之间共享:在一个集簇中只有一份pg_authid拷贝,而不是每个数据库一份。

列名称

列类型

描述

oid

oid

行标识符。

rolname

name

角色名。

rolsuper

bool

角色有超级用户权限。

rolinherit

bool

如果本角色是另一个角色的成员,本角色是否自动另一个角色的权限。

rolcreaterole

bool

角色能创建更多角色。

rolcreatedb

bool

角色能创建数据库。

rolcanlogin

bool

角色是否能登录。即该角色是否能够作为初始会话授权标识符。

rolreplication

bool

角色是一个复制角色。复制角色可以启动复制连接并且创建和删除复制槽。

rolbypassrls

bool

角色是否可以绕过所有的行级安全性策略。

rolconnlimit

int4

对于可以登录的角色,本列设置该角色可以同时发起最大连接数。-1表示无限制。

rolpassword

text

密码(可能被加密过),如果没有口令则为空。格式取决于使用的加密方法的形式。

rolvaliduntil

timestamptz

口令过期时间(只用于口令鉴定),如果永不过期则为空。

对于一个MD5加密的口令,rolpassword列将由字符串md5后面跟上一个 32 字符的十六进制 MD5 哈希值构成。MD5 哈希值将是该用户的口令串接上它们的用户名。例如,如果用户joe的口令是xyzzy,则本数据库将存储xyzzyjoe的 md5 哈希。

如果口令采用 SCRAM-SHA-256 加密,它的格式是:

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

其中saltStoredKeyServerKey是 Base64 编码格式。这种格式与 RFC 5803 说明的格式相同。

不遵守上述格式的口令被假定为未加密。