如何设置PostgreSQL数据源的认证方式

来源:站长素材作者:小宵头衔:网络博主
导读:本期聚焦于小伙伴创作的《如何设置PostgreSQL数据源的认证方式》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何设置PostgreSQL数据源的认证方式》有用,将其分享出去将是对创作者最好的鼓励。

PostgreSQL的数据源认证方式决定了客户端连接数据库时需要提供的凭证类型和验证规则,所有认证相关的配置都存储在pg_hba.conf文件中,该文件位于PostgreSQL的数据目录下,修改后需要重载配置才能生效。

PostgreSQL支持的认证方式类型

PostgreSQL提供了多种认证方式,不同方式适用于不同的使用场景,常见的认证方式如下:

  • trust:无需任何验证,连接即允许,仅适合本地开发测试环境,生产环境禁止使用。
  • password:使用明文密码进行验证,密码会在网络中传输,安全性较低,不推荐生产使用。
  • md5:使用MD5哈希后的密码进行验证,密码不会明文传输,是较常用的认证方式。
  • scram-sha-256:基于SCRAM-SHA-256协议的密码验证,安全性高于md5,PostgreSQL 10及以上版本支持。
  • peer:从操作系统层面验证用户名,仅适用于本地Unix域套接字连接,要求数据库用户名和操作系统用户名一致。
  • ldap:对接LDAP服务器进行统一身份认证,适合企业级多系统统一账号管理的场景。

pg_hba.conf配置文件结构

pg_hba.conf的每一行代表一条认证规则,规则从上到下匹配,第一条匹配的规则会生效,规则的基本格式如下:

连接类型  数据库名  用户名  客户端地址  认证方式  [认证选项]

各字段的具体含义:

  • 连接类型:常见值为local(本地Unix域套接字连接)、host(TCP/IP连接,包括SSL和非SSL)、hostssl(仅SSL加密的TCP/IP连接)、hostnossl(非SSL的TCP/IP连接)。
  • 数据库名:指定该规则适用的数据库,all表示所有数据库,也可以指定单个数据库名,多个数据库用逗号分隔。
  • 用户名:指定该规则适用的数据库用户,all表示所有用户,也可以指定单个用户名,多个用户用逗号分隔。
  • 客户端地址:指定允许连接的客户端IP范围,0.0.0.0/0表示所有IPv4地址,::0/0表示所有IPv6地址,也可以指定单个IP或者CIDR格式的网段。
  • 认证方式:即前面提到的trust、md5、scram-sha-256等认证类型。
  • 认证选项:部分认证方式需要额外参数,比如ldap认证需要指定LDAP服务器地址等。

常见场景的认证配置示例

场景1:本地开发环境配置

本地开发时可以使用peer认证本地连接,密码认证远程连接,配置示例如下:

# 本地Unix域套接字连接,使用peer认证,仅允许操作系统用户postgres连接所有数据库
local   all             postgres                                peer
# 本地其他用户连接,使用md5密码认证
local   all             all                                     md5
# 本地回环地址TCP连接,使用md5认证
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

场景2:生产环境内网访问配置

生产环境仅允许内网特定网段的机器连接,使用scram-sha-256认证提升安全性,配置示例如下:

# 仅允许192.168.0.0/24网段的机器通过TCP连接,使用scram-sha-256认证
host    all             all             192.168.0.0/24          scram-sha-256
# 禁止其他所有TCP连接
host    all             all             0.0.0.0/0               reject

场景3:对接LDAP统一认证配置

企业环境需要对接LDAP服务器进行统一账号认证,配置示例如下:

# 对接LDAP认证,指定LDAP服务器地址和搜索基准
host    all             all             0.0.0.0/0               ldap
ldapserver=ldap.ipipp.com
ldapport=389
ldapbasedn="ou=users,dc=ipipp,dc=com"
ldapsearchattribute=uid

配置生效方法

修改pg_hba.conf后,需要让PostgreSQL重载配置才能生效,不需要重启数据库服务,执行以下SQL命令即可:

-- 重载pg_hba.conf配置
SELECT pg_reload_conf();

如果需要确认配置是否生效,可以查看PostgreSQL的日志文件,或者尝试用新的认证规则进行连接测试。如果连接失败,可以检查pg_hba.conf的规则顺序是否正确,以及认证方式对应的用户密码是否正确设置。

注意事项

  • pg_hba.conf的规则是从上到下匹配的,更严格的规则应该放在更前面,避免宽松规则提前匹配导致安全问题。
  • 生产环境禁止使用trust认证方式,密码认证建议优先使用scram-sha-256而不是md5或者password。
  • 修改配置前建议备份原始的pg_hba.conf文件,避免配置错误导致所有连接都无法访问数据库。
  • 如果需要开放远程连接,还需要确保postgresql.conf中的listen_addresses参数设置为*或者对应的网卡地址,否则TCP连接会被数据库直接拒绝。

PostgreSQL数据源认证pg_hba_conf认证配置数据库安全修改时间:2026-06-28 18:57:36

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。