在 CentOS 上调试 PostgreSQL,一般从 服务状态、日志、配置文件、权限、SQL 问题 几个方面入手。下面给你一套从入门到进阶的调试思路,适用于 CentOS 7 / 8 / Rocky / Alma 等系统。
systemctl status postgresql
或(不同版本)
systemctl status postgresql-15
✅ running 表示正常
❌ failed / inactive 表示服务未启动或异常
sudo systemctl start postgresql
sudo systemctl restart postgresql
sudo systemctl stop postgresql
常见路径:
/var/lib/pgsql/data/log/
/var/lib/pgsql/15/data/log/
/var/log/postgresql/
查看日志:
ls -lh /var/lib/pgsql/data/log/
tail -f /var/lib/pgsql/data/log/postgresql-*.log
journalctl -u postgresql -xe
✅ 很多启动失败、端口占用问题都在这里
/var/lib/pgsql/data/postgresql.conf
/var/lib/pgsql/data/pg_hba.conf
listen_addresses = '*'
port = 5432
# pg_hba.conf
host all all 0.0.0.0/0 md5
修改后重启:
systemctl restart postgresql
ss -lntp | grep 5432
或
netstat -lntp | grep 5432
✅ 说明 PostgreSQL 正在监听
ps aux | grep postgres
sudo -u postgres psql
psql -U postgres -d postgres -h 127.0.0.1
常见错误:
| 错误 | 原因 |
|---|---|
password authentication failed |
密码错误 |
no pg_hba.conf entry |
访问策略未允许 |
could not connect to server |
服务未启动 |
# postgresql.conf
log_statement = 'all'
log_min_duration_statement = 200ms
重启后查看日志
SELECT * FROM pg_stat_activity;
SELECT * FROM pg_locks;
ls -ld /var/lib/pgsql/data
✅ 正确权限:
drwx------ postgres postgres
修复:
chown -R postgres:postgres /var/lib/pgsql/data
chmod 700 /var/lib/pgsql/data
检查:
getenforce
临时关闭测试:
setenforce 0
如恢复正常,需配置 SELinux 或放通端口:
semanage port -a -t postgresql_port_t -p tcp 5432
journalctl -u postgresql -xe
tail -n 100 /var/lib/pgsql/data/log/postgresql-*.log
df -h
pg_isready
pg_ctl status -D /var/lib/pgsql/data
你可以直接把错误信息贴出来,比如:
psql 报错我可以 逐行帮你分析并给出修复命令 ✅