You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.5.15连接Docker中PostgreSQL时密码认证失败

Spring Boot 3.5.15 连接Docker PostgreSQL 16 密码认证失败排查方案

你遇到的问题是命令行能正常连接PostgreSQL,但Spring Boot始终报FATAL: password authentication failed for user "attendance",以下是几个高概率的排查方向:

1. 确认Spring Boot实际加载的配置参数

有时候配置文件的内容不一定是程序实际读取的,比如DevTools缓存、优先级更高的配置源覆盖。

  • 打印加载的配置值:在项目中添加一个启动时的配置检查类,直接输出实际读取的用户名和密码:
@Component
public class ConfigDebugger implements ApplicationRunner {
    @Autowired
    private Environment environment;

    @Override
    public void run(ApplicationArguments args) {
        System.out.println("实际读取的数据库用户名:" + environment.getProperty("spring.datasource.username"));
        System.out.println("实际读取的数据库密码:" + environment.getProperty("spring.datasource.password"));
    }
}

启动项目后看控制台输出,确认是否和你配置的attendance一致。

  • 查看Hikari连接池日志:你已经开启了logging.level.com.zaxxer.hikari=DEBUG,启动时会输出连接池初始化的参数,重点看username和password字段是否正确。

2. 检查IntelliJ运行配置的环境变量

IntelliJ的Run/Debug Configurations中设置的环境变量优先级高于application.properties,可能无意中覆盖了数据库密码:

  1. 打开IntelliJ的「Run」→「Edit Configurations...」
  2. 找到你的Spring Boot启动配置,切换到「Environment」标签
  3. 检查是否有spring.datasource.password相关的变量,如果有,删除或者改成正确值。

3. 排查PostgreSQL认证方式兼容性

Docker版PostgreSQL 16默认使用scram-sha-256认证方式,虽然Spring Boot 3.5.15配套的PostgreSQL驱动应该支持,但可以临时测试排除:

  1. 进入PostgreSQL容器:
docker exec -it postgres bash
  1. 修改pg_hba.conf文件(注意路径):
echo "host    all             all             127.0.0.1/32            trust" >> /var/lib/postgresql/data/pg_hba.conf
  1. 重启PostgreSQL服务:
pg_ctl -D /var/lib/postgresql/data restart

此时Spring Boot不需要密码就能连接,如果能成功,说明是认证方式或密码哈希的问题,再改回scram-sha-256并重新设置用户密码:

ALTER USER attendance WITH PASSWORD 'attendance';

4. 解决DevTools缓存问题

Spring Boot DevTools的缓存可能导致配置未更新:

  • 执行Maven清理命令:mvn clean install
  • 重启IntelliJ并执行「File」→「Invalidate Caches...」→ 勾选「Clear file system cache and local history」后重启
  • 临时关闭DevTools:在application.properties添加spring.devtools.restart.enabled=false,重启项目测试

5. 调整JDBC URL参数

尝试在JDBC URL中添加sslmode=disable,避免因SSL配置导致的认证失败:

spring.datasource.url=jdbc:postgresql://localhost:5432/attendance?sslmode=disable

内容的提问来源于stack exchange,提问作者SP222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:54:51