Spring Boot项目连接PostgreSQL报密码认证失败如何解决
解决方案
问题根因
报错提示用户enock密码认证失败,核心原因有两个:
- PostgreSQL所有角色均未配置密码,但Spring Boot的
application.properties中配置了spring.datasource.password=root,两边校验不匹配 - PostgreSQL默认的本地连接认证策略可能不允许无密码登录
修复步骤
方案一:适配无密码配置(适合本地开发测试场景)
- 修改
application.properties配置,删除或清空密码配置,修改后配置如下:
spring.datasource.url=jdbc:postgresql://localhost:5432/student spring.datasource.username=enock # 密码配置留空或者直接删除该行 spring.datasource.password= spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect spring.jpa.properties.hibernate.format_sql=true
- 如果修改后仍报错,需要调整PostgreSQL的客户端认证配置:
- 找到PostgreSQL安装目录下的
pg_hba.conf文件,不同系统默认路径不同:- Linux:
/var/lib/postgresql/<对应版本号>/main/pg_hba.conf - Windows:PostgreSQL安装路径下的
data目录内 - MacOS:
/Library/PostgreSQL/<对应版本号>/data/pg_hba.conf
- Linux:
- 找到以下两行配置,将末尾的认证方式从
md5/scram-sha-256改为trust:host all all 127.0.0.1/32 trust host all all ::1/128 trust - 重启PostgreSQL服务生效。
- 找到PostgreSQL安装目录下的
方案二:给角色设置密码(更规范,无需修改PostgreSQL默认配置)
直接登录PostgreSQL,执行SQL给enock用户设置和配置文件一致的密码:
ALTER USER enock PASSWORD 'root';
该方案不需要修改Spring Boot原有配置,执行完SQL直接重启项目即可。
验证方法
修复完成后先在本地执行命令验证数据库可正常登录:
psql -U enock -d student
确认可正常登录后再启动Spring Boot项目即可。
内容的提问来源于stack exchange,提问作者enockmale
相关产品推荐
相关产品推荐

