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

远程连接PostgreSQL服务器超时,基础配置后仍报错求排查

远程PostgreSQL连接超时问题排查

客户端环境与代码

家中笔记本作为客户端,通过Python+SQLAlchemy编写远程数据库读取程序connect_to_db_in_another_comp.py,代码如下:

from sqlalchemy import create_engine
from sqlalchemy.engine import URL
from sqlalchemy.orm import sessionmaker
from models import Base

url = URL.create(
    database="Test-connect-2",
    username="postgres",
    host="192.168.XXX.XX",
    password="123",
    port=5432,
    drivername="postgresql",
)

engine = create_engine(url)
connection = engine.connect() # traceback start here

Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

all_records = session.query(User).all()
for i in all_records:
    print(i.user_name)

错误信息

运行程序后触发连接超时错误:

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError)
connection to server at "192.168.XXX.XX", port 5432 failed: Connection
timed out (0x0000274C/10060) Is the server running on that host and
accepting TCP/IP connections ?

服务器侧配置

台式机作为服务器,安装PostgreSQL 16(pgAdmin 4管理),已创建Test-connect-2数据库及user表,服务器属性:

  • Host name/address: 192.168.XXX.XX
  • Port: 5432
  • Maintenance database: postgres
  • Username: postgres

已在pg_hba.conf末尾添加规则:host all all 0.0.0.0/0 md5,且关闭两台设备防火墙及杀毒软件。

排查建议

  1. 修改PostgreSQL监听地址
    打开服务器的postgresql.conf配置文件,找到listen_addresses参数,修改为listen_addresses = '*'(默认是localhost,仅允许本地连接),修改后必须重启PostgreSQL服务。

  2. 验证网络连通性

    • 在客户端执行ping 192.168.XXX.XX,确认服务器IP可达。
    • 用端口测试工具验证5432端口开放:执行telnet 192.168.XXX.XX 5432或nc -zv 192.168.XXX.XX 5432,如果连接失败说明端口未对外开放。
  3. 确认PostgreSQL服务状态
    在服务器上检查PostgreSQL服务是否正常运行,确保服务没有异常停止。

  4. 代码小问题提示
    代码中使用session.query(User).all()但未导入User模型,需补充from models import User,否则后续查询会触发NameError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:32:17