Debian 上 PostgreSQL 无法连接,常见原因可以分成 服务没起来、监听配置、认证配置、用户/数据库不存在、防火墙/权限 几类。下面按“最常见 → 较少见”的顺序说明,并给出排查方法。
systemctl status postgresql
# 或
pg_lsclusters
如果没运行:
systemctl start postgresql
systemctl enable postgresql
Debian 默认 只监听 127.0.0.1。
sudo -u postgres psql -c "SHOW listen_addresses;"
编辑:
sudo nano /etc/postgresql/<版本>/main/postgresql.conf
修改:
listen_addresses = 'localhost' # 或 '*'
重启:
systemctl restart postgresql
FATAL: no pg_hba.conf entry for host
FATAL: password authentication failed
sudo nano /etc/postgresql/<版本>/main/pg_hba.conf
常见允许本地连接:
local all all peer
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
远程连接需加:
host all all 0.0.0.0/0 md5
修改后:
systempctl reload postgresql
postgressudo -u postgres psql
psql -U username -d dbname -h 127.0.0.1
peer:只能用系统用户连接md5:需要密码psql -U postgres
# FATAL: Peer authentication failed
sudo -u postgres psql
或改成 md5 并设密码。
sudo -u postgres psql -c "SHOW port;"
连接时指定:
psql -p 5433 -U user -d db
sudo ufw status
开放端口:
sudo ufw allow 5432/tcp
云服务器还要检查 安全组。
错误示例:
could not connect to server: No such file or directory
检查:
ls /var/run/postgresql/
通常是服务未启动。
systemctl status postgresqlpg_lsclusterslisten_addressespg_hba.confsudo -u postgres psql 测试tail -n 50 /var/log/postgresql/postgresql-*.log
如果你愿意,可以把 具体报错信息 或 连接方式(本地/远程、命令行/程序) 发出来,我可以精准告诉你哪一步错了。