CentOS 无法启动 PostgreSQL 的原因有很多,下面按最常见 → 较少见的顺序帮你排查,并给出对应解决办法。
systemctl status postgresql
journalctl -xe
或
systemctl status postgresql-<版本号>
根据报错信息再往下看。
CentOS 上服务名通常带版本号:
postgresql-12
postgresql-13
postgresql-15
❌ 错误:
systemctl start postgresql
✅ 正确:
systemctl start postgresql-15
PostgreSQL 第一次必须初始化数据目录
postgresql-setup --initdb
# 或
/usr/pgsql-15/bin/postgresql-15-setup initdb
然后:
systemctl start postgresql-15
PostgreSQL 不能用 root 启动
正确权限示例:
/var/lib/pgsql/15/data → postgres:postgres
修复:
chown -R postgres:postgres /var/lib/pgsql
chmod 700 /var/lib/pgsql/15/data
ss -lntp | grep 5432
如有冲突:
postgresql.confport = 5433
查看:
getenforce
临时关闭测试:
setenforce 0
如能启动,说明是 SELinux 问题:
semanage port -a -t postgresql_port_t -p tcp 5432
firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload
常见错误文件:
postgresql.conf
pg_hba.conf
检查语法:
/usr/pgsql-15/bin/postgres -D /var/lib/pgsql/15/data
前台运行,错误会直接显示。
df -h
free -h
rm -f /var/lib/pgsql/15/data/postmaster.pid
你可以直接贴出:
systemctl status postgresql
journalctl -xe | tail -50
我可以精准告诉你哪一行报错、怎么改。