pg_authid #目录pg_authid包含关于数据库授权标识符(角色)的信息。角色涵盖了“用户”和“组”这两个概念。用户本质上只是设置了rolcanlogin标志的角色。任何角色(无论是否设置了rolcanlogin)都可以拥有其他角色作为成员;参见pg_auth_members。
由于这个目录包含密码,它不应公开可读。pg_roles是建立在pg_authid之上的公开可读视图,它会隐藏密码字段。
Chapter 21包含关于用户和权限管理的详细信息。
由于用户标识符是集簇范围的,pg_authid在一个集簇的所有数据库之间共享:在一个集簇中只有一份pg_authid拷贝,而不是每个数据库一份。
Table 51.8. pg_authid 列
| Name | 类型 | 描述 |
|---|---|---|
oid |
oid |
行标识符 |
rolname |
name |
角色名 |
rolsuper |
bool |
角色有超级用户权限 |
rolinherit |
bool |
该角色是否会自动继承其所属其他角色的权限 |
rolcreaterole |
bool |
角色能创建更多角色 |
rolcreatedb |
bool |
角色能创建数据库 |
rolcanlogin |
bool |
角色是否能登录。即该角色是否能够作为初始会话授权标识符 |
rolreplication |
bool |
角色是一个复制角色。复制角色可以启动复制连接并且创建和删除复制槽。 |
rolbypassrls |
bool |
角色是否可以绕过所有的行级安全性策略,详见Section 5.8。 |
rolconnlimit |
int4 |
对于可以登录的角色,本列设置该角色可以同时发起最大连接数。-1表示无限制。 |
rolpassword |
text |
密码(可能已加密);如果没有则为空。其格式取决于所使用的加密形式。 |
rolvaliduntil |
timestamptz |
密码过期时间(只用于密码鉴定),如果永不过期则为空 |
对于一个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 指定的格式相同。
不符合上述任一种格式的密码将被视为未加密密码。