当前位置:首页 > 文章列表 > 文章 > 常见问题 > PostgreSQL连接被拒绝解决方法

PostgreSQL连接被拒绝解决方法

2026-05-10 11:46:46 0浏览 收藏
当遇到 PostgreSQL 的 “could not connect to server: Connection refused” 错误时,真正的问题往往并非广为误解的 pg_hba.conf 权限配置,而是连接请求在抵达数据库认证流程前就已失败——这通常意味着服务未运行、未监听指定地址和端口、被防火墙拦截、客户端参数错误,或受安全软件阻断;本文系统梳理了五大关键排查维度,从验证服务状态、检查监听配置、放行防火墙规则、核对连接参数到识别安全软件干扰,帮你快速定位并解决根本原因,让连接重归稳定可靠。

PostgreSQL报could not connect to server: Connection refused是pg_hba.conf的问题吗?

如果您尝试连接 PostgreSQL 数据库,但收到 could not connect to server: Connection refused 错误,则该问题通常与 pg_hba.conf 的配置无关。此错误表明客户端根本未到达 PostgreSQL 的认证阶段,连接请求在传输层即被拒绝。以下是针对该错误的多种独立排查与修复路径:

一、验证 PostgreSQL 服务是否正在运行

“Connection refused”最常见原因是数据库进程未启动,导致操作系统无监听套接字响应 TCP 连接请求。必须首先确认服务处于活动状态。

1、在 Linux 系统上执行:sudo systemctl status postgresql

2、若显示 inactive (dead) 或未找到服务单元,运行:sudo systemctl start postgresql

3、对于非 systemd 环境(如某些容器或旧发行版),改用:pg_ctl -D /var/lib/postgresql/data status(路径需根据实际数据目录调整)

二、检查 PostgreSQL 是否监听目标端口和地址

即使服务运行,若未在预期 IP 和端口上绑定监听套接字,连接仍会被操作系统内核直接拒绝。pg_hba.conf 在此阶段尚未参与处理。

1、在数据库服务器本地执行:sudo ss -tlnp | grep :5432(将 5432 替换为您实际使用的端口)

2、若输出为空,或仅显示 127.0.0.1:5432 而您正从远程连接,则需修改 postgresql.conf 中的 listen_addresses 参数

3、将 listen_addresses = 'localhost' 改为 listen_addresses = '0.0.0.0' 或指定网卡 IP,并确保 port = 5432 与客户端一致

4、修改后必须重启服务:sudo systemctl restart postgresql

三、确认防火墙未拦截目标端口

操作系统级防火墙可能丢弃发往 PostgreSQL 端口的 SYN 包,使客户端收不到任何响应,表现为 Connection refused。

1、检查当前防火墙规则:sudo ufw status verbose(Ubuntu/Debian)或 sudo firewall-cmd --list-all(RHEL/CentOS)

2、若 5432 端口未在允许列表中,执行:sudo ufw allow 5432/tcp 或 sudo firewall-cmd --add-port=5432/tcp --permanent && sudo firewall-cmd --reload

3、在云环境(如阿里云、AWS)中,还需检查安全组规则是否放行对应端口和源 IP 段

四、排除客户端连接参数错误

客户端指定的主机名或端口号与服务实际监听配置不匹配,会导致连接尝试发送至错误地址,自然被拒绝。

1、确认连接字符串中的 host 值:若连接本地服务,使用 127.0.0.1 而非 localhost(后者可能触发 Unix domain socket,而服务未启用)

2、确认端口号完全一致:检查应用配置、JDBC URL、psycopg2.connect() 参数中的 port 是否与 postgresql.conf 中定义的 port 数值相同

3、在客户端机器上执行:telnet 127.0.0.1 5432(Linux/macOS)或 Test-NetConnection 127.0.0.1 -Port 5432(PowerShell),观察是否返回 Connected

五、检查是否被安全软件拦截

部分终端安全软件(如火绒、360、Windows Defender 防火墙)可能主动阻止 PostgreSQL 进程监听网络端口,尤其在非标准安装路径或首次运行时。

1、临时禁用本地杀毒软件及系统防火墙,再次尝试 telnet 测试

2、若禁用后连接成功,需在安全软件中为 postgres 或 postmaster 进程添加网络访问白名单

3、检查 Windows 系统服务管理器中,PostgreSQL 服务是否处于“正在运行”状态,且启动类型为“自动”

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

SpringBoot3自定义配置库实现教程SpringBoot3自定义配置库实现教程
上一篇
SpringBoot3自定义配置库实现教程
JavaScript操作URL及解析构造查询参数详解
下一篇
JavaScript操作URL及解析构造查询参数详解
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    258次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    302次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    282次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    259次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    68次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码