我无法使用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。更新了pg_hba配置文件 托管所有0.0.0.1/32信任
2。更新了postgresql文件 listen_addresses ='*'
3。更改防火墙规则以允许从端口5432连接 我还需要做什么才能使其正常工作?
答案 0 :(得分:1)
对于其他可能遇到相同问题的人,您可以尝试以下操作。
确保服务正在侦听所需的界面
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
行未被注释(如上例),并在更改后重新启动服务。
检查您的防火墙配置
确保服务在正确的界面上侦听后,请确保您的防火墙(如果有)允许客户端连接到该服务(这可能意味着您的本地防火墙,即位于两者之间的网络设备)客户和服务)。
选中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