PostgreSQL 认证方式详解:trust 与 scram-sha-256 的区别与配置 在 PostgreSQL 中trust 和 scram-sha-256 是 pg_hba.conf客户端认证配置文件中用来控制数据库访问权限的两种身份验证方法。它们决定了用户连接数据库时“如何证明自己是自己”。简单概括两者的区别trust 是无条件放行免密scram-sha-256 是加密密码验证最安全。以下是详细的对比和原理解析1. 什么是 trust信任认证含义只要连接请求的来源 IP/Unix Socket 符合 pg_hba.conf 中的规则数据库就会无条件允许该用户登录。验证过程完全跳过密码验证。用户甚至不需要提供密码或提供任意错误密码都能登录。安全性极低。相当于把家门的钥匙直接挂在门把手上。适用场景仅限本地连接local 或 host 127.0.0.1的开发测试环境。数据库服务器处于完全隔离的内网且没有安全风险。绝对不能用于生产环境或任何暴露在网络中的数据库。2. 什么是 scram-sha-256SCRAM-SHA-256 认证含义全称是 Salted Challenge Response Authentication Mechanism with SHA-256。它是 PostgreSQL 目前最安全的默认密码加密认证方式从 PostgreSQL 10 引入PG 14 成为默认。验证过程客户端与服务器之间不直接传输明文密码。具体流程如下客户端发起连接请求。服务器发送一个随机生成的 Salt盐值和迭代次数给客户端。客户端使用 SHA-256 算法将“密码 Salt”混合计算出摘要Digest发送回服务器。服务器用自己存储的加密密钥进行比对。即使网络被监听黑客拿到的也只是动态的加密摘要无法反推出原始密码。安全性极高。防窃听、防重放攻击且加盐后能有效抵御彩虹表撞库。适用场景所有生产环境、公网访问、需要高安全合规的场景。3. 核心区别对比表对比维度trustscram-sha-256是否需要密码❌ 不需要随意输入✅ 必须提供正确密码密码在网络传输不传输因为没有校验不传输明文传输的是加密摘要加盐哈希抗窃听能力❌ 毫无防备✅ 即使被抓包也无法破解密码用户密码存储不检查密码存储内容无关在 pg_authid 表中存储SCRAM-SHA-256$salt$stored_key$server_key性能开销极低几无开销略微高于 Trust有计算哈希的 CPU 开销但现代服务器可忽略安全性⚠️ 致命缺陷任何人都能伪装✅ 工业级安全默认配置倾向仅用于 local 本地测试生产环境绝对首选4. 重要的配置关联password_encryption需要注意的是在 pg_hba.conf 中配置了 scram-sha-256 后PostgreSQL 还依赖一个服务端参数password_encryption来决定存储密码时的算法。如果 pg_hba.conf 要求 scram-sha-256但password_encryption设置为 md5那么当用户执行ALTER USER ... PASSWORD ...时密码仍会以较弱的 MD5 格式存储导致连接失败。正确做法确保 postgresql.conf 中设置password_encryption scram-sha-2565. 它们通常写在哪儿在$PGDATA/pg_hba.conf文件中常见写法如下# 本地连接仅限开发测试—— 可以使用 trustlocalall postgres trust# 本地 IPv4 连接必须走密码—— 必须使用 scram-sha-256hostall all127.0.0.1/32 scram-sha-256# 远程应用连接生产环境—— 强制使用 scram-sha-256hostall app_user192.168.1.0/24 scram-sha-256 建议如果是为了解决连接报错比如no pg_hba.conf entry尽量不要为了省事设置成 trust除非你确定只有你自己能连且极看重方便。安全底线从 PostgreSQL 15 开始官方甚至移除了对明文密码 password 方法的默认推荐全力导向 scram-sha-256。请务必将生产环境数据库的 pg_hba.conf 配置为 scram-sha-256。如果你在运维中需要快速排查可以通过查询pg_hba_file_rules视图来确认当前生效的认证规则SELECT*FROMpg_hba_file_rules;

相关新闻

最新新闻

前端密码安全实战:从MD5、SHA-256到Bcrypt的演进与选型指南

前端密码安全实战:从MD5、SHA-256到Bcrypt的演进与选型指南

1. 密码安全为何如此重要?作为前端开发者,我们经常需要处理用户密码等敏感信息。记得2019年某大型社交平台的数据泄露事件吗?超过5亿用户的明文密码被曝光,直接导致大量用户账号被盗。这种事故不仅损害用户利益,更会让…

2026/7/15 20:29:57
如何零基础将普通图片变成可打印的3D模型:ImageToSTL完整指南

如何零基础将普通图片变成可打印的3D模型:ImageToSTL完整指南

如何零基础将普通图片变成可打印的3D模型:ImageToSTL完整指南 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left…

2026/7/15 20:29:57
AI模型可解释性:从黑盒到白盒的技术路径

AI模型可解释性:从黑盒到白盒的技术路径

AI模型可解释性:从黑盒到白盒的技术路径随着AI模型在医疗诊断、金融风控、司法决策等高风险领域的应用,"模型为什么做出这个决策"变得至关重要。AI可解释性(XAI, eXplainable AI)致力于打开黑盒模型,让人类理…

2026/7/15 20:29:57
蓝绿发布的资料

蓝绿发布的资料

蓝绿发布是一种零停机、秒级回滚的软件发布策略,核心是通过两套完全一致的生产环境实现版本无缝切换,是对可用性要求极高的核心业务的主流发布方案。 一、核心运行逻辑 ‌环境准备‌:同时运行两套配置完全相同的生产环境,标记为“…

2026/7/15 20:29:57
AI多模态大模型:从CLIP到GPT-4o的统一架构

AI多模态大模型:从CLIP到GPT-4o的统一架构

AI多模态大模型:从CLIP到GPT-4o的统一架构多模态AI正在打破不同感知模态之间的壁垒,实现文本、图像、音频、视频的统一理解和生成。从CLIP开创性的对比学习,到GPT-4o的端到端原生多模态,这一领域经历了快速的技术迭代。本文将系统…

2026/7/15 20:29:57
JAVA客户端信任自签名或私有CA证书的两种实践路径

JAVA客户端信任自签名或私有CA证书的两种实践路径

1. 为什么需要信任自签名或私有CA证书?在开发测试或内网环境中,我们经常会遇到这样的场景:你的Java客户端需要访问一个使用自签名证书或私有CA签发的HTTPS服务。这时候,你可能会遇到一个常见的错误——"sun.security.validat…

2026/7/15 20:24:57

月新闻