无法使用 psycopg2 从远程主机连接到 postgres 数据库?
Can't connect to postgres database from remote host using psycopg2?
我无法使用 psycopg2 通过远程主机连接到 postgres 数据库并收到类似
的错误
错误:
File "/usr/lib64/python2.7/site-packages/psycopg2/__init__.py", line 126, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: could not connect to server: Connection timed out
Is the server running on host "192.x.x.x" and accepting
TCP/IP connections on port 5432?
注意:我做了以下更改
1.updated pg_hba 配置文件
托管所有所有 0.0.0.1/32 信任
2.updated postgresql 文件
listen_addresses = '*'
3.changed 允许从端口 5432 连接的防火墙规则
我还需要做些什么才能让它发挥作用?
对于可能遇到相同问题的其他人,您可以尝试以下操作。
确保服务正在侦听所需的接口[=52=]
sudo ss -lntp | grep 5432
如果您看到类似 127.0.0.1:5432
或 ::1:5432
的内容,这意味着 localhost.
调整 postgresql.conf:
listen_addresses='192.168.1.2, 127.0.0.1'
您也可以使用 '*' 这意味着任何接口,但根据您的网络配置,它可能很危险。
确保 listen_addresses
行未被注释(如上例所示)并在进行更改后重新启动 服务。
检查您的防火墙配置
确保服务在正确的接口上侦听后,确保您的 防火墙 (s)(如果有)允许客户端连接到该服务(这可能意味着您的本地防火墙、网络位于客户端和服务之间的设备)。
勾选pg_hba.conf
此文件控制 PostgreSQL 的基于主机的身份验证机制:
# TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.1.3/32 md5
以上行允许所有用户从 192.168.1.3
连接,前提是他们提供了所需的密码;如果你想允许整个子网,你可以使用像 192.168.1.0/24
.
这样的东西
如果您怀疑 psycopg2 或 Python 有问题,您可以使用 PostgreSQL 的客户端测试连接:psql:
psql -U postgres -h 192.168.1.2 db_name
我无法使用 psycopg2 通过远程主机连接到 postgres 数据库并收到类似
的错误错误:
File "/usr/lib64/python2.7/site-packages/psycopg2/__init__.py", line 126, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: could not connect to server: Connection timed out
Is the server running on host "192.x.x.x" and accepting
TCP/IP connections on port 5432?
注意:我做了以下更改
1.updated pg_hba 配置文件 托管所有所有 0.0.0.1/32 信任
2.updated postgresql 文件 listen_addresses = '*'
3.changed 允许从端口 5432 连接的防火墙规则 我还需要做些什么才能让它发挥作用?
对于可能遇到相同问题的其他人,您可以尝试以下操作。
确保服务正在侦听所需的接口[=52=]
sudo ss -lntp | grep 5432
如果您看到类似 127.0.0.1:5432
或 ::1:5432
的内容,这意味着 localhost.
调整 postgresql.conf:
listen_addresses='192.168.1.2, 127.0.0.1'
您也可以使用 '*' 这意味着任何接口,但根据您的网络配置,它可能很危险。
确保 listen_addresses
行未被注释(如上例所示)并在进行更改后重新启动 服务。
检查您的防火墙配置
确保服务在正确的接口上侦听后,确保您的 防火墙 (s)(如果有)允许客户端连接到该服务(这可能意味着您的本地防火墙、网络位于客户端和服务之间的设备)。
勾选pg_hba.conf
此文件控制 PostgreSQL 的基于主机的身份验证机制:
# TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.1.3/32 md5
以上行允许所有用户从 192.168.1.3
连接,前提是他们提供了所需的密码;如果你想允许整个子网,你可以使用像 192.168.1.0/24
.
如果您怀疑 psycopg2 或 Python 有问题,您可以使用 PostgreSQL 的客户端测试连接:psql:
psql -U postgres -h 192.168.1.2 db_name