psql连接PostgreSQL报错:SCRAM认证需libpq 10+的解决步骤
解决WSL2 Ubuntu中psql因SCRAM认证版本不兼容的问题
先确认问题根源
执行命令 psql --version,查看当前psql版本。如果版本低于10,就是因为旧版本不支持SCRAM认证导致的错误。
方案一:升级psql客户端(推荐,更安全)
Ubuntu默认源的psql版本可能偏旧,直接用PostgreSQL官方源升级:
- 导入官方密钥:
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-archive-keyring.gpg >/dev/null - 添加官方软件源:
echo "deb [signed-by=/usr/share/keyrings/postgresql-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list - 更新源并安装新版客户端:
sudo apt update sudo apt install postgresql-client-16 # 可替换为10及以上的任意版本,推荐选最新稳定版 - 再次执行
psql --version确认版本≥10,之后重新用psql -U <username> -W连接测试即可。
方案二:临时修改PostgreSQL认证方式(仅应急,安全性较低)
如果暂时没法升级客户端,可临时把认证方式改成旧的md5:
- 找到PostgreSQL的
pg_hba.conf配置文件:- 若PostgreSQL在WSL里,路径一般是
/etc/postgresql/<你的postgres版本>/main/pg_hba.conf - 若在Windows本地,路径在PostgreSQL安装目录的
data文件夹下
- 若PostgreSQL在WSL里,路径一般是
- 找到本地连接的配置行,把
scram-sha-256替换成md5:# 修改前 local all all scram-sha-256 # 修改后 local all all md5 - 重启PostgreSQL服务:
- WSL里执行
sudo systemctl restart postgresql - Windows里在「服务」中找到PostgreSQL服务重启
- WSL里执行
- 重新用psql连接测试。
内容的提问来源于stack exchange,提问作者Phillip Ngan
相关产品推荐
相关产品推荐

