Docker中SpringBoot连接PostgreSQL14超时求助,PostgreSQL15正常
PostgreSQL14连接超时问题排查与解决
核心问题分析
从PostgreSQL14的日志可以看到最后一行:
2023-02-28 08:47:15.810 IST [317] LOG: database system is shut down
说明PostgreSQL14服务并未处于运行状态,这是导致Docker内SpringBoot应用、pgAdmin连接超时的根本原因。PostgreSQL15能正常连接,是因为其服务正常运行且配置无问题。
排查与修复步骤
检查并启动PostgreSQL14服务
- Windows:打开
服务(services.msc),找到postgresql-x64-14服务,确认状态为正在运行,若未启动则手动启动。 - Linux:执行
systemctl status postgresql-14查看状态,未运行则执行systemctl start postgresql-14,并设置开机自启systemctl enable postgresql-14。 - macOS:执行
brew services list | grep postgresql,若未运行则执行brew services start postgresql@14。 - 若启动失败,查看系统日志(Windows事件查看器、Linux
/var/log/postgresql/目录、macOS控制台)定位启动失败原因。
- Windows:打开
验证监听配置(postgresql.conf)
- 找到PostgreSQL14的配置文件目录(Windows默认
C:\Program Files\PostgreSQL\14\data,Linux默认/var/lib/postgresql/14/main,macOS默认/usr/local/var/postgresql@14)。 - 编辑
postgresql.conf:- 确保
listen_addresses = '*'(允许所有IP访问,或指定特定IP如localhost,host.docker.internal)。 - 确认
port = 5433(与连接字符串中的端口一致,避免和PostgreSQL15默认的5432端口冲突)。
- 确保
- 修改后重启PostgreSQL14服务。
- 找到PostgreSQL14的配置文件目录(Windows默认
检查端口占用与防火墙
- 验证5433端口是否被占用:
- Windows:
netstat -ano | findstr 5433 - Linux/macOS:
lsof -i :5433
- Windows:
- 若端口被其他程序占用,停止占用程序或修改PostgreSQL14的端口。
- 检查防火墙规则,确保5433端口允许本地及Docker容器访问(Docker默认网段通常为
172.17.0.0/16)。
- 验证5433端口是否被占用:
配置连接权限(pg_hba.conf)
- 同目录下编辑
pg_hba.conf,添加以下规则允许本地、Docker容器及host.docker.internal访问:host test postgres 127.0.0.1/32 scram-sha-256 host test postgres 172.17.0.0/16 scram-sha-256 host test postgres host.docker.internal/32 scram-sha-256 - 重启PostgreSQL14服务使配置生效。
- 同目录下编辑
本地连接测试
- 使用psql命令直接测试本地连接:
psql -h localhost -p 5433 -U postgres -d test - 若本地连接成功,再测试Docker内的SpringBoot应用连接;若本地连接失败,优先解决本地连接问题。
- 使用psql命令直接测试本地连接:
内容的提问来源于stack exchange,提问作者Teletubbies
相关产品推荐
相关产品推荐

