You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

psycopg2连接报错:localhost主机5432端口是否运行服务并接受TCP/IP连接?

psycopg2连接PostgreSQL报错Connection refused排查方案

完整报错信息:

psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?

你贴的两段代码为psycopg2的标准连接逻辑,本身无语法错误,报错根源是程序无法和PostgreSQL服务建立TCP连接,按以下步骤逐一排查即可:

1 确认PostgreSQL服务运行状态

  • Windows系统:按下Win+R输入services.msc打开服务管理器,查找postgresql开头的服务,确认状态为正在运行,未启动则右键手动启动即可。
  • macOS系统:终端执行brew services list,查看postgresql状态是否为started,未启动执行brew services start postgresql。
  • Linux(Debian/Ubuntu为例):终端执行sudo systemctl status postgresql,若状态为inactive,执行sudo systemctl start postgresql启动服务,如需开机自启追加执行sudo systemctl enable postgresql。

2 确认PostgreSQL监听配置

找到PostgreSQL的主配置文件postgresql.conf,不同系统常见路径如下:

  • Linux:/etc/postgresql/[版本号]/main/postgresql.conf
  • macOS(brew安装):/usr/local/var/postgres/postgresql.conf 或 /opt/homebrew/var/postgres/postgresql.conf
  • Windows:安装目录下的data文件夹内

打开文件后修改两项配置:

  • 找到listen_addresses,确认值为'localhost'、'127.0.0.1'或'*',若为注释状态取消注释并修改后保存。
  • 找到port配置项,确认监听端口和你代码中config.DB_PORT的取值一致,默认端口为5432,如有修改需同步更新代码配置。

配置修改后重启PostgreSQL服务生效。

3 确认端口未被拦截

  • 本地测试可先临时关闭系统防火墙,再次尝试连接,若连接成功说明防火墙拦截了5432端口,添加端口放行规则即可。
  • 若连接远程服务器上的PostgreSQL,还需确认服务器安全组的入站规则放行了本地IP对5432端口的访问。

4 确认访问权限配置

在postgresql.conf同级目录下找到pg_hba.conf文件,打开后确认本地访问规则存在以下配置:

# IPv4本地连接规则
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6本地连接规则
host    all             all             ::1/128                 scram-sha-256

若缺少对应规则手动添加后,重启PostgreSQL服务生效。

5 确认代码配置参数正确

在连接代码前打印config.DB_HOST、config.DB_PORT两个变量的取值,确认和PostgreSQL实际监听的地址、端口完全一致,排除配置文件参数写错的问题。


内容的提问来源于stack exchange,提问作者user8214

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:24:02