技术求助:Navicat无法创建PostgreSQL新连接,报错authentication method 10 not supported
这个报错我之前帮不少开发者排查过,核心原因确实是Navicat与PostgreSQL的版本不兼容——具体是认证方式的匹配问题:
PostgreSQL 10及后续版本默认启用了
scram-sha-256认证算法(也就是报错里的“method 10”),但旧版Navicat(比如12.x及更早版本)并不支持这种新的加密认证方式,所以会抛出这个错误。
下面给你两种可行的解决方案,你可以根据自己的情况选择:
方案一:升级Navicat到支持scram-sha-256的版本
这是最推荐的长期方案,毕竟scram-sha-256比旧的md5更安全。只要把Navicat升级到15.x及以上版本,就能直接支持PostgreSQL的新认证方式,不用做任何配置修改,重新创建连接就能正常使用。
方案二:修改PostgreSQL配置,降级认证方式为md5
如果暂时不想升级Navicat,可以通过修改PostgreSQL的配置,把认证方式改回旧的md5:
找到PostgreSQL的配置文件
pg_hba.conf- Windows:通常在
C:\Program Files\PostgreSQL\{你的版本号}\data\pg_hba.conf - macOS:
/Library/PostgreSQL/{你的版本号}/data/pg_hba.conf - Linux:常见路径是
/var/lib/postgresql/{你的版本号}/main/pg_hba.conf或/usr/local/pgsql/data/pg_hba.conf
- Windows:通常在
编辑
pg_hba.conf,替换认证方式
找到所有以host开头的行,把末尾的scram-sha-256替换成md5,比如:# 修改前 host all all 0.0.0.0/0 scram-sha-256 # 修改后 host all all 0.0.0.0/0 md5编辑
postgresql.conf,修改密码加密方式
同样在data目录下找到这个文件,把password_encryption参数的值改成md5:password_encryption = md5重启PostgreSQL服务
- Windows:打开「服务」面板,找到PostgreSQL服务右键重启
- macOS/Linux:用命令行执行(以systemd为例):
或者用PostgreSQL自带的工具:sudo systemctl restart postgresqlpg_ctl restart -D /path/to/your/postgresql/data
重置数据库用户密码
因为之前的密码是用scram-sha-256加密的,现在需要重置成md5格式的密码。可以用psql命令行连接数据库后执行:ALTER USER your_db_username WITH PASSWORD 'your_new_password';
完成以上步骤后,再用Navicat创建新连接应该就能成功了。
内容的提问来源于stack exchange,提问作者Marie Loise




