PostgreSQL连接失败求助:SQLSTATE[08006] [7] 连接被拒绝
PostgreSQL连接错误SQLSTATE[08006] [7] 排查方案
针对更新PostgreSQL、启用pdo_pgsql扩展后出现的连接拒绝错误,且已尝试端口开放、修改listen_addresses及pg_hba.conf仍未解决的情况,可按以下步骤排查:
确认PostgreSQL服务运行状态
执行命令检查服务是否正常启动:systemctl status postgresql若显示
inactive,启动服务并设置开机自启:systemctl start postgresql systemctl enable postgresql验证监听地址与端口是否生效
检查PostgreSQL实际监听的地址和端口,确认配置已应用:ss -tulpn | grep postgres正常应显示
0.0.0.0:5432或:::5432(IPv6)。若仍显示127.0.0.1:5432,说明修改的配置文件路径错误:- Debian/Ubuntu系统配置文件通常在
/etc/postgresql/<版本号>/main/postgresql.conf - CentOS/RHEL系统通常在
/var/lib/pgsql/<版本号>/data/postgresql.conf
确认修改对应实例的配置文件后,重启服务:
systemctl restart postgresql- Debian/Ubuntu系统配置文件通常在
补充IPv6访问规则
错误提示涉及IPv6地址::1,需在pg_hba.conf中追加IPv6全局访问规则:host all all ::/0 md5保存后重启PostgreSQL服务。
确认pdo_pgsql扩展加载成功
检查PHP是否正确加载扩展:php -m | grep pdo_pgsql若无输出,需:
- 确认在正确的php.ini文件中取消了
extension=pdo_pgsql的注释(注意CLI和FPM的php.ini路径可能不同) - 重新安装扩展(Debian/Ubuntu执行
apt install php-pdo-pgsql,CentOS/RHEL执行yum install php-pdo-pgsql)
完成后重启PHP-FPM服务:
systemctl restart php-fpm- 确认在正确的php.ini文件中取消了
测试本地连接排查权限问题
在服务器本地尝试连接,验证用户权限:psql -U <数据库用户名> -d <数据库名> -h localhost若连接失败,检查
pg_hba.conf中的本地连接规则,确保存在类似条目:local all all md5保存后重启服务重试。
检查额外防火墙与安全组
- 若使用firewalld(CentOS/RHEL),开放端口:
firewall-cmd --add-port=5432/tcp --permanent firewall-cmd --reload - 云服务器需检查安全组规则,确保5432端口已对客户端IP或所有IP开放。
- 若使用firewalld(CentOS/RHEL),开放端口:
内容的提问来源于stack exchange,提问作者AlexandreTELOUK
相关产品推荐
相关产品推荐

