连接远程 PostgreSQL 服务器超时

问题描述 投票:0回答:1

我做这个任务是为了自学,以更好地理解客户端和服务器之间的交互。

所以我家里有一台笔记本电脑和一台台式电脑。我将使用笔记本电脑作为客户端,台式电脑作为服务器。两者都通过网线连接到网络。

现在关于客户。 在笔记本电脑上,我用 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) 连接到服务器“192.168.XXX.XX”,端口 5432 失败:连接 超时 (0x0000274C/10060) 服务器是否在该主机上运行并且 接受 TCP/IP 连接?

现在关于服务器。 在桌面计算机上的 pgAdmin 4 中已有的 PostgreSQL 16 服务器上,我创建了 Test-connect-2 数据库。在此数据库中,我添加了一张表“用户”。服务器属性如下:

主机名/地址:192.168.XXX.XX

端口:5432

维护数据库:postgres

用户名:postgres

在文件 pg_hba.conf 中我添加了最后一行:

托管所有0.0.0.0/0 md5

我在两台设备中禁用了防火墙并禁用了防病毒软件,但我仍然收到上面指出的错误。告诉我我的错误是什么

postgresql server sqlalchemy psycopg2 pgadmin
1个回答
0
投票

修改postgresql.conf以允许远程连接 默认情况下,PostgreSQL 仅侦听本地主机。要启用远程连接,请将以下内容添加到

C:\NetIQ\idm\postgres\data\postgresql.conf

listen_addresses = '*'

如果服务器有多个接口,您可以指定一个。

更新 pg_hba.conf 以进行远程身份验证 要允许远程连接,请将以下内容添加到

C:\NetIQ\idm\postgres\data\pg_hba.conf

host all all 0.0.0.0/0 md5

对于 IPv6:

host all all ::0/0 md5

测试并重启 重新启动 PostgreSQL 并确保防火墙规则允许端口 5432 上的 TCP 连接。

此外,请确保如果您使用受保护的服务器,它允许端口 5432 上的 TCP 连接。您可以通过修改防火墙规则来实现这一点。

sudo ufw status

sudo ufw allow 5432/tcp

sudo ufw reload
© www.soinside.com 2019 - 2024. All rights reserved.