pg_hba.conf 支持的主要认证方式、用途及用法如下:
1. trust
- 用途:完全信任连接请求,无需验证身份,直接允许访问。
- 用法:在 pg_hba.conf 条目里写为
trust,仅适用于本地完全可信环境(如管理员专属的服务器),风险较高,不建议对外网开放。
2. reject
- 用途:明确拒绝匹配条目的所有连接请求。
- 用法:写为
reject,用于禁止特定来源(如某 IP 段、某用户)的访问,常作为访问控制的 “黑名单” 规则。
3. md5
- 用途:将用户口令经 MD5 哈希后传递,避免明文暴露,是常用的安全密码认证方式。
- 用法:写为
md5,要求数据库用户的密码已存储在pg_authid系统表中(通过CREATE ROLE ... WITH PASSWORD设置),支持远程 / 本地连接。
4. password
- 用途:以明文形式传递用户口令(安全性极低),仅适用于加密网络或测试场景。
- 用法:写为
password,使用逻辑与md5一致,但口令会明文传输,不建议生产环境使用。
5. peer(本地专用)
- 用途:基于本地操作系统用户身份认证,自动匹配 OS 用户名与数据库用户名。
- 用法:写为
peer,仅支持local(Unix 套接字)连接,无需输入密码,要求 OS 用户与数据库用户同名(或通过pg_ident.conf配置映射关系)。
6. ident
- 用途:通过 ident 服务映射远程 / 本地操作系统用户到数据库用户,实现 OS 身份与 DB 身份的关联。
- 用法:写为
ident,需服务器端运行 ident 服务;本地场景通常用peer替代,远程场景需配合pg_ident.conf建立 OS 用户与 DB 用户的映射规则。
7. scram-sha-256
- 用途:采用 SCRAM-SHA-256 算法进行密码哈希与认证,安全性高于
md5(PostgreSQL 10 及以上支持)。 - 用法:写为
scram-sha-256,要求数据库用户密码以该算法存储(需将password_encryption参数设为scram-sha-256后创建用户)。
8. ldap
- 用途:通过外部 LDAP 服务器实现集中式身份认证,适用于企业级统一用户管理。
- 用法:写为
ldap,需额外配置 LDAP 参数(如ldapserver指定 LDAP 服务器地址、ldapbasedn指定用户搜索基准 DN)
host all all 0.0.0.0/0 ldap ldapserver=ldap.example.com ldapbasedn="ou=users,dc=example,dc=com"
9. cert
- 用途:基于 SSL 客户端证书认证,通过验证客户端证书的有效性授权连接。
- 用法:写为
cert,需先启用数据库 SSL(ssl=on),并配置clientcert=1要求客户端提供证书,适用于高安全级别的加密访问场景。

徐万新之路

