Spring Boot连接Docker中PostgreSQL报admin用户认证失败
问题:Spring Boot连接Docker中PostgreSQL报密码认证失败
配置文件信息
application.yml
# postgres sql connection spring: datasource: password: password url: jdbc:postgresql://127.0.0.1:5432/todos username: admin jpa: hibernate: ddl-auto: create #create properties: hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect format_sql: true show-sql: true # Configuring the port for our server server: port: 3001
docker-compose.yml
version: "3.9" services: postgresdb: image: postgres:14.4-alpine container_name: pgsql restart: always volumes: - ./db/init.sql:/docker-entrypoint-initdb.d/0_init.sql # - $HOME/database:/var/lib/postgresql/data ports: - "5232:5432" expose: - "5232" environment: POSTGRES_DB: todos POSTGRES_USER: admin POSTGRES_PASSWORD: password SERVICE_NAME: postgresdb networks: - internalnet networks: internalnet: driver: bridge
错误信息
org.postgresql.util.PSQLException: FATAL: password authentication failed for user "admin"
容器状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a7035cd521a6 postgres:14.4-alpine "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 5232/tcp, 0.0.0.0:5232->5432/tcp pgsql
可能的原因分析
- 端口不匹配:Docker将容器内的5432端口映射到了宿主机的5232端口,但Spring Boot配置的JDBC URL仍使用5432端口,需改为
jdbc:postgresql://127.0.0.1:5232/todos。 - 容器数据残留:当前配置未挂载持久化数据卷,若之前启动过容器,销毁后重新启动可能残留旧的用户认证数据。需彻底清理旧容器和匿名卷后重启:
docker-compose down -v docker-compose up -d - 初始化脚本干扰:挂载的
./db/init.sql可能包含修改admin用户密码、创建冲突用户的语句,导致认证信息被覆盖。可暂时注释该卷挂载,重启容器测试。 - 网络访问问题:若Spring Boot应用也运行在Docker容器中,需用容器名
pgsql作为JDBC URL的主机名,同时确保应用容器加入internalnet网络(当前描述未说明应用在容器内,此条为补充排查点)。
内容的提问来源于stack exchange,提问作者crispengari
相关产品推荐
相关产品推荐

