Windows11下Node.js20+PostgreSQL15.1用pg-native报SCRAM认证错误怎么办?
解决SCRAM认证要求libpq版本10+的问题
问题根源
pg-native依赖系统中安装的libpq库,你的Windows系统里的libpq版本低于10,而PostgreSQL 15默认启用了SCRAM-SHA-256认证机制,旧版libpq不支持该认证方式,所以触发报错。
可行解决办法
1. 更新系统的libpq库并重新编译pg-native
- 下载与你的PostgreSQL 15版本匹配的Windows安装包,安装时务必勾选
libpq组件 - 把PostgreSQL安装目录下的
bin路径(例如C:\Program Files\PostgreSQL\15\bin)移到系统环境变量PATH的最顶端,保证Node优先调用新版libpq - 重启终端和项目,重新安装
pg-native:npm uninstall pg-native npm install pg-native --build-from-source
2. 改用纯JS版本的pg客户端(最省心)
直接放弃pg-native,使用pg包自带的纯JS客户端,不需要依赖系统libpq,天然支持SCRAM认证:
import { Pool } from 'pg'; const pool = new Pool({ /* 你的数据库配置 */ }); pool.connect();
3. 修改PostgreSQL认证方式(仅临时测试用)
如果只是临时调试,可以修改PostgreSQL的pg_hba.conf文件(通常在C:\Program Files\PostgreSQL\15\data目录下),将对应条目认证方式从scram-sha-256改为md5:
# 找到对应主机/用户的配置行,修改method字段 host all all 127.0.0.1/32 md5
修改后重启PostgreSQL服务。注意:md5认证安全性远低于SCRAM,生产环境严禁使用
内容的提问来源于stack exchange,提问作者ar099968
相关产品推荐
相关产品推荐

