1. 检查PostgreSQL服务状态
首先确认PostgreSQL服务是否正在运行,使用命令:
sudo systemctl status postgresql
若服务未启动,执行以下命令启动并设置开机自启:
sudo systemctl start postgresql
sudo systemctl enable postgresql
2. 验证PostgreSQL配置文件设置
PostgreSQL的配置文件需允许远程连接(若需远程访问):
listen_addresses为'*'(允许所有IP连接)或指定具体IP,例如:listen_addresses = '*'host all all 0.0.0.0/0 md5sudo systemctl restart postgresql3. 检查防火墙设置
若系统启用了防火墙(如UFW),需开放PostgreSQL默认端口(5432):
sudo ufw allow 5432/tcp
然后重新加载防火墙规则:
sudo ufw reload
4. 确认pgAdmin/pgAdmin4连接配置
在pgAdmin中创建服务器连接时,需确保以下信息正确:
localhost或127.0.0.1,远程服务器填IP地址;5432(需与postgresql.conf中的port一致);postgres用户)5. 测试网络连通性
使用ping命令测试与PostgreSQL服务器的网络连接:
ping <服务器IP>
若无法ping通,需检查网络线路、路由器设置或服务器防火墙
6. 查看PostgreSQL日志定位问题
日志文件通常位于/var/log/postgresql/目录下(如postgresql-<版本>-main.log),使用以下命令实时查看日志:
tail -f /var/log/postgresql/postgresql-<版本>-main.log
日志中会记录连接失败的详细原因(如认证失败、配置错误)
7. 验证PostgreSQL用户权限
确保连接用户具有访问目标数据库的权限,可使用以下SQL命令授予权限(需以超级用户身份执行):
GRANT ALL PRIVILEGES ON DATABASE <数据库名> TO <用户名>;
若忘记密码,可通过修改pg_hba.conf(将验证方式改为trust临时登录)重置密码
8. 检查系统资源占用
使用top或htop命令查看系统资源(CPU、内存)占用情况,若资源耗尽可能导致连接失败。可通过终止占用过高资源的进程(如kill -9 <PID>)释放资源