pg_authid
目录pg_authid
包含关于数据库授权标识符(角色)的信息。角色把“用户”和“组”的概念包含在内。一个用户实际上就是一个rolcanlogin
标志被设置的角色。任何角色(不管rolcanlogin
设置与否)都能够把其他角色作为成员,参见pg_auth_members
。
由于这个目录包含口令,它不能是公共可读的。pg_roles
是在pg_authid
上的一个公共可读视图,它隐去了口令域。
第 21 章包含关于用户和权限管理的详细信息。
由于用户标识符是集簇范围的,pg_authid
在一个集簇的所有数据库之间共享:在一个集簇中只有一份pg_authid
拷贝,而不是每个数据库一份。
表 51.8. pg_authid
的列
名字 | 类型 | 描述 |
---|---|---|
oid | oid | 行标识符(隐藏属性,必须被显式选择才会显示) |
rolname | name | 角色名 |
rolsuper | bool | 角色是否拥有超级用户权限 |
rolinherit | bool | 如果本角色是另一个角色的成员,本角色是否自动另一个角色的权限 |
rolcreaterole | bool | 角色是否能创建更多角色 |
rolcreatedb | bool | 角色是否能创建数据库 |
rolcanlogin | bool | 角色是否能登录。即该角色是否能够作为初始会话授权标识符 |
rolreplication | bool | 角色是否为一个复制角色。一个复制角色可以开启复制连接和创建删除复制槽。 |
rolbypassrls | bool | 角色是否可以绕过所有的行级安全性策略,详见 第 5.7 节。 |
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声明的相同。
不遵循这些格式的密码被假定为未加密。