Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. Connection refused: no further information Connection refused: no further information
首先,引用[1]提到检查PostgreSQL状态时显示没有服务器在运行。所以第一步应该是确认PostgreSQL服务是否正在运行。用户可能需要启动服务,或者查看日志排查启动失败的原因。
接着,引用[3]提到Docker关闭时可能没有正确释放PostgreSQL进程,导致重启失败。这可能意味着如果用户使用Docker,需要确保容器完全停止后再启动,或者检查残留的进程占用了端口。
然后是配置问题。PostgreSQL默认可能只监听本地socket,不监听TCP/IP。需要检查postgresql.conf文件中的listen_addresses是否为'*',以及端口是否正确。此外,pg_hba.conf文件中的客户端认证设置是否正确,允许来自所需IP范围的连接。
还有防火墙或端口限制的可能性。即使PostgreSQL配置正确,如果防火墙阻止了5432端口,连接也会被拒绝。需要检查iptables或firewalld设置,确保端口开放。
另外,用户可能使用了错误的连接地址或端口,比如连接到localhost而实际服务运行在另一个IP或端口上,或者存在多个PostgreSQL实例导致端口冲突。
综合这些可能性,解决步骤应该包括检查服务状态、调整配置文件、处理防火墙、检查连接参数等。同时,需要根据具体情况,比如是否使用Docker,来针对性处理。### 分步解决方案
1. 检查PostgreSQL服务状态
# 检查服务是否运行
systemctl status postgresql
# 或使用pg_ctl命令(需指定数据目录)
pg_ctl -D /usr/local/var/postgres status
- 若显示
no server running
,需要启动服务:systemctl start postgresql # 或通过pg_ctl启动 pg_ctl -D /usr/local/var/postgres start
2. 确认TCP/IP配置
修改配置文件postgresql.conf
(路径通常为/etc/postgresql/[版本]/main/postgresql.conf
):
# 允许监听所有IP地址
listen_addresses = '*'
# 确认端口设置
port = 5432
修改后重启服务:
systemctl restart postgresql
3. 调整客户端认证规则
修改pg_hba.conf
文件(与postgresql.conf同目录):
# 允许所有IPv4/IPv6客户端通过密码连接
host all all 0.0.0.0/0 md5
host all all ::/0 md5
重启服务使配置生效[^3]。
4. 检查端口占用与防火墙
# 查看5432端口是否被占用
netstat -tuln | grep 5432
# 开放防火墙端口(CentOS/Fedora)
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload
5. Docker环境特殊处理
若使用D
相关推荐


















