Spring Boot连接PostgreSQL报错:postgres用户密码认证失败
问题根因
你psql登录时实际连接的PostgreSQL服务端口为5433,但application.properties里配置的数据源端口写的是默认值5432。本地存在多个PostgreSQL实例(或安装时手动修改了服务端口)时,Spring Boot会连到错误的数据库实例,自然会报密码认证失败。
你之前修改pg_hba.conf不生效也是同一个原因:改的大概率是5432端口实例的配置文件,对5433端口正在运行的PostgreSQL服务完全无效。
解决步骤
- 首先修改数据源配置的端口为实际运行的5433,同时确认
student数据库已经在5433端口的实例中创建完成,修改后的配置行如下:
spring.datasource.url=jdbc:postgresql://localhost:5433/student
- 把之前改过的
pg_hba.conf恢复为默认的host all all all md5配置,注意要找到5433端口对应实例的数据目录下的配置文件修改,不要改错到其他实例的文件。修改完成后,在Windows服务列表中找到对应5433端口的PostgreSQL服务,右键重启。 - 重启服务后打开命令提示符,执行
netstat -ano | findstr "5433",确认有进程正常监听5433端口,再启动Spring Boot测试连接。 - 如果仍提示密码错误,在已经连上5433实例的psql窗口中执行以下SQL,重置postgres用户密码,和配置文件中填写的密码保持一致即可:
ALTER USER postgres WITH PASSWORD '你的配置文件中填写的密码';
验证技巧
可以先用IntelliJ自带的Database工具新建PostgreSQL连接,填写和配置文件完全一致的地址、端口、库名、用户名、密码,测试连通成功后再启动项目,避免反复重启排查浪费时间。
内容的提问来源于stack exchange,提问作者art1722
相关产品推荐
相关产品推荐

