温馨提示×

centos为何连不上postgresql

小樊
39
2026-10-03 10:43:39
栏目: 云计算

CentOS 连不上 PostgreSQL,通常原因集中在 网络、服务状态、监听配置、防火墙、用户权限 这几方面。下面按最常见原因逐一排查。


一、PostgreSQL 服务是否启动

systemctl status postgresql

或(老版本)

service postgresql status

如果没启动:

systemctl start postgresql
systemctl enable postgresql

二、PostgreSQL 是否只监听本地

查看配置文件:

vi /var/lib/pgsql/data/postgresql.conf

确认这一行:

listen_addresses = 'localhost'

如果只连本机没问题;
如果要远程连接,改为:

listen_addresses = '*'

改完重启:

systemctl restart postgresql

三、CentOS 防火墙(最常见原因)

1️⃣ firewalld

firewall-cmd --list-all

如果没开放 5432:

firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload

2️⃣ iptables(老系统)

iptables -L -n

四、PostgreSQL 访问控制(pg_hba.conf)

vi /var/lib/pgsql/data/pg_hba.conf

远程连接示例(允许某个网段):

host    all    all    192.168.1.0/24    md5

改完重载配置:

systemctl reload postgresql

五、SELinux 拦截(CentOS 特有)

查看:

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 版本 发出来,我可以帮你精准定位。

0 踩