在 PostgreSQL 的pg_hba.conf文件中METHOD认证方法决定了服务器如何验证客户端的身份。PostgreSQL 支持多种认证方法主要可以分为以下几类基于密码的认证 (Password-Based)这是最常用的方式客户端需要提供密码。方法说明安全性适用场景scram-sha-256推荐。使用 SCRAM-SHA-256 挑战-响应机制。密码不以明文传输也不存储哈希值而是存储 Salted Hash。最高 PG 10 默认首选生产环境首选md5使用 MD5 哈希进行挑战-响应。比明文安全但 MD5 已被认为不够强壮易受碰撞攻击。中等旧版本兼容或内部网络password明文传输。密码以未加密形式通过网络发送。极低严禁在生产环境使用仅限 SSL 隧道内或测试注意从 PostgreSQL 14 开始默认认证方法已改为scram-sha-256。基于操作系统的认证 (OS-Based)利用操作系统的用户身份进行映射通常用于本地连接无需输入数据库密码。方法说明适用系统peerLinux/Unix 专用。获取客户端的操作系统用户名并检查它是否与请求的数据库用户名匹配。Linux, macOS, Unixident通用。通过联系客户端机器上的 Ident 服务器来确定操作系统用户名。通常用于 TCP 连接。Linux, Unix, Windows(较少用)示例如果 Linux 用户alice运行psql -U alice且配置为peer则直接登录无需密码。无条件信任/拒绝 (Trust/Reject)方法说明风险trust无条件允许。只要连接建立成功就允许访问不需要任何密码。极高。任何能连接到该端口/Socket 的人都可以登录。仅用于本地开发或完全隔离的内网。reject无条件拒绝。立即关闭连接。通常用于在允许某些 IP 之前先拒绝其他所有 IP作为默认兜底规则。无用于阻断外部认证集成 (External Integration)与企业级身份管理系统集成。方法说明ldap使用 LDAP 目录服务如 Active Directory, OpenLDAP进行认证。radius使用 RADIUS 服务器进行认证。cert使用 SSL 客户端证书进行认证。客户端必须提供有效的 SSL 证书Common Name (CN) 需匹配数据库用户名。pam使用操作系统可插拔认证模块 (PAM) 进行认证。bsd使用 BSD 认证服务较少见。gss/sspi使用 Kerberos GSSAPI (Unix) 或 SSPI (Windows) 进行单点登录 (SSO)。常见场景推荐配置本地开发环境 (最方便)# local is for Unix domain socket connections only local all all trust/peer生产环境 (最安全)# local is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 0.0.0.0/0 md5 # IPv6 local connections: host all all ::1/128 scram-sha-256企业内部网 (平衡安全与便利)# 内网特定网段免密需确保网络隔离 host all all 192.168.1.0/24 trust # 其他所有连接需要密码 host all all 0.0.0.0/0 scram-sha-256总结建议首选scram-sha-256安全、标准。本地运维peerLinux 下免密安全且方便。避免password明文传输除非有 SSL。慎用trust除非你非常清楚自己在做什么且网络绝对安全。你之前的配置中使用了md5和scram-sha-256这是比较标准的做法。如果想免密可以将本地的md5改为peer或trust。