52.8. pg_authid
pg_authid
The catalog pg_authid contains information about database authorization identifiers (roles). A role subsumes the concepts of "users" and "groups". A user is essentially just a role with the rolcanlogin flag set. Any role (with or without rolcanlogin) can have other roles as members; see pg_auth_members.
Since this catalog contains passwords, it must not be publicly readable. pg_roles is a publicly readable view on pg_authid that blanks out the password field.
Database Roles contains detailed information about user and privilege management.
Because user identities are cluster-wide, pg_authid is shared across all databases of a cluster: there is only one copy of pg_authid per cluster, not one per database.
Column Type Description |
|---|
oid Row identifier |
rolname Role name |
rolsuper Role has superuser privileges |
rolinherit Role automatically inherits privileges of roles it is a member of |
rolcreaterole Role can create more roles |
rolcreatedb Role can create databases |
rolcanlogin Role can log in. That is, this role can be given as the initial session authorization identifier. |
rolreplication Role is a replication role. A replication role can initiate replication connections and create and drop replication slots. |
rolbypassrls Role bypasses every row-level security policy, see Row Security Policies for more information. |
rolconnlimit For roles that can log in, this sets maximum number of concurrent connections this role can make. -1 means no limit. |
rolpassword Encrypted password; null if none. The format depends on the form of encryption used. |
rolvaliduntil Password expiry time (only used for password authentication); null if no expiration |
: pg_authid Columns
For an MD5 encrypted password, rolpassword column will begin with the string md5 followed by a 32-character hexadecimal MD5 hash. The MD5 hash will be of the user's password concatenated to their user name. For example, if user joe has password xyzzy, PostgreSQL will store the md5 hash of xyzzyjoe.
Support for MD5-encrypted passwords is deprecated and will be removed in a future release of PostgreSQL. Refer to Password Authentication for details about migrating to another password type.
If the password is encrypted with SCRAM-SHA-256, it has the format: SCRAM-SHA-256$<iteration count>:<salt>$<StoredKey>:<ServerKey> where salt, StoredKey and ServerKey are in Base64 encoded format. This format is the same as that specified by RFC 5803.