Spring Boot连接PostgreSQL容器时密码认证失败问题排查
问题排查与解决步骤
容器内配置修改不持久:直接进入PostgreSQL容器修改
pg_hba.conf,容器重启后会恢复默认配置。正确做法是在Docker Compose中挂载宿主机的自定义pg_hba.conf到容器内部默认路径/var/lib/postgresql/data/pg_hba.conf,或者通过环境变量POSTGRES_HOST_AUTH_METHOD=trust全局设置信任认证(注意:该方式仅适合测试环境,生产环境禁用)。确认PostgreSQL监听地址:检查容器内
postgresql.conf中的listen_addresses是否设为*,否则容器仅监听本地回环地址,本地Spring Boot无法建立连接。可在Docker Compose的PostgreSQL服务中添加命令参数强制修改:command: ["postgres", "-c", "listen_addresses=*"]验证用户创建完整性:确保用户
ibrahim创建时正确配置了密码与登录权限,执行以下SQL确认:CREATE USER ibrahim WITH PASSWORD 'password' LOGIN;同时需确认该用户拥有目标数据库的访问权限。
核对Spring Boot连接配置:检查
application.properties中的参数是否准确:spring.datasource.url=jdbc:postgresql://localhost:5432/your_database_name spring.datasource.username=ibrahim spring.datasource.password=password spring.datasource.driver-class-name=org.postgresql.Driver注意替换
your_database_name为实际创建的数据库名,且端口号需与Docker Compose中暴露的端口一致(默认5432)。检查Docker端口映射:确保Docker Compose的PostgreSQL服务配置了端口映射,否则本地无法访问容器内的服务:
ports: - "5432:5432"
内容的提问来源于stack exchange,提问作者Bihi23
相关产品推荐
相关产品推荐

