背景:
本地idea连接正常,测试服务器报错如下图:

PostgreSQL JDBC 驱动是postgresql-42.7.8,项目yml连接方式也是保持干净,但就是一直报这个错误.
原因排查:
postgresql10版本以上支持2种连接认证,1是md5,2是scram-sha-256,查询方式如下:
SHOW password_encryption;
原因是服务端配置的是scram-sha-256,但是客户端还在用md5认证,认证方式不匹配.
ps:pgsql有vastbase等变种版本,我的是原始pg14 select version();可以查询版本.
问题解决:
修改认证为md5
-
修改/var/lib/postgresql/data下pg_hba.conf,注释scram-sha-256,新增md5(有则忽略)

-
修改/var/lib/postgresql/data下postgresql.conf的认证方式,改为md5

-
重启数据库,查询确认
--返回是md5
SHOW password_encryption;--重新设置密码
ALTER USER postgres WITH PASSWORD 'xxxxx'; -
重启项目服务
本方式是使用旧的权限认证,最好还是使用新的scram-sha-256,有空研究下原因
scram-sha-256解决思路
1.密码不带特殊符号
- 加 JVM 参数禁用 JDK FIPS 模式
-Dcom.sun.security.fips=false
2.重新设置密码
- Postgres 版本被魔改,重新安装