我家里有 Synology DS920 连接器连接到我的路由器。我安装了 portainer(容器管理)并启动了 PostgreSQL 的容器。从 pgAdmin 4 我可以查看并访问我的数据库(例如我可以运行查询 SELECT version(); 并获得答案)。我的问题是从本地电脑访问。我想使用 psycopg2 但我遇到了一些错误......
import psycopg2
conn = psycopg2.connect(
host="localhost",
database="Test",
user="***",
password="***"
)
我尝试使用 localhost 作为主机,但失败了,因为数据库位于服务器上的容器中,而不是在我的本地计算机上。 我尝试使用我的服务器的 IP,但收到以下错误消息(与 localhost 的错误消息相同):
psycopg2.OperationalError:连接到“x.x.x.x”处的服务器,端口 5432 失败:连接被拒绝(0x0000274D/10061) 服务器是否在该主机上运行并接受 TCP/IP 连接?
应该使用什么主机?通过 portainer,我可以访问容器 IP 地址(一个容器用于 pgAdmin,一个容器用于 portainer,一个容器用于 PostgreSQL)。我尝试了这三种方法以及 PostgreSQL 中的一种(在端口 2665:5432 上发布),但收到了相同的错误消息:
psycopg2.OperationalError:连接到“x.x.x.x”处的服务器,端口 5432 失败:连接超时(0x0000274C/10060) 服务器是否在该主机上运行并接受 TCP/IP 连接?
除了主机之外,哪里可以看到允许访问数据库的用户列表? postgresql.conf 文件中有什么我应该更改的吗?我在用 监听地址 = '*'
经过多次尝试,我发现我需要指定我应该监听的端口(2665,而不是默认使用的 5432 端口)。作为主机,我使用了我的服务器的 IP 地址。