CentOS 连不上 PostgreSQL,通常原因集中在 网络、服务状态、监听配置、防火墙、用户权限 这几方面。下面按最常见原因逐一排查。
systemctl status postgresql
或(老版本)
service postgresql status
如果没启动:
systemctl start postgresql
systemctl enable postgresql
查看配置文件:
vi /var/lib/pgsql/data/postgresql.conf
确认这一行:
listen_addresses = 'localhost'
如果只连本机没问题;
如果要远程连接,改为:
listen_addresses = '*'
改完重启:
systemctl restart postgresql
firewall-cmd --list-all
如果没开放 5432:
firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload
iptables -L -n
vi /var/lib/pgsql/data/pg_hba.conf
远程连接示例(允许某个网段):
host all all 192.168.1.0/24 md5
改完重载配置:
systemctl reload postgresql
查看:
getenforce
如果是 Enforcing,可临时测试:
setenforce 0
如果这样能连,说明是 SELinux 问题,可放行端口:
semanage port -a -t postgresql_port_t -p tcp 5432
本地:
psql -U postgres -h 127.0.0.1
远程:
psql -h <centos_ip> -U postgres -d postgres
| 报错 | 原因 |
|---|---|
| connection refused | 服务未启动 / 防火墙 |
| no pg_hba.conf entry | 没授权 IP |
| timeout | 网络不通 / 防火墙 |
| password authentication failed | 密码或用户错 |
如果你愿意,可以把 具体报错信息 + CentOS 版本 + PostgreSQL 版本 发出来,我可以帮你精准定位。