使用psycopg2连接postgresql时出现连接被拒绝的错误

21

psycopg2.OperationalError: could not connect to server: Connection refused

服务器无法连接:拒绝连接。

服务器是否在主机“45.32.1XX.2XX”上运行并接受端口5432的TCP / IP连接?

这里,我已经打开了我的套接字。

tcp        0      0 127.0.0.1:5432          0.0.0.0:*  LISTEN      11516/postgres                
tcp6       0      0 ::1:5432                :::*       LISTEN      11516/postgres

我谷歌了一下,得知应该修改 pg_hba.conf 这个文件, 但在我的 postgresql根目录下,我完全找不到这个文件。

另外,我已成功连接了另一个服务器。

谢谢。

这里,我修改了 pg_hba.conf,更新了这个host all all 218.3.A.B trust,并重新加载了它。但是仍然不能正常工作。


PostgreSQL 运行在哪个操作系统下? - Sergey Gornostaev
在Ubuntu 14.04中 - M1nt_zwy
3个回答

17
您的netstat输出显示postgres正在监听127.0.0.1,但是您的错误提示表明您正在尝试连接到45.32.1XX.2XX。我相信您已经诊断出了问题。
您需要修改postgresql.conf文件中的listen_addresses设置(不是pg_hba.conf)。postgresql.conf文件位于postgresql数据目录中,通常类似于/var/lib/postgresql/data/var/lib/pgsql/datalisten_addresses参数的文档在这里here

3
非常感谢。最后我将listen_addresses='*'添加到postgresql.conf中。现在它可以正常工作了。 - M1nt_zwy

6
1. Modify two configure files
# vi /var/lib/pgsql/data/postgresql.conf
 Replace the line:
listen_addresses = 'localhost'  -> listen_addresses = '*'
# vi /var/lib/pgsql/data/pg_hba.conf
 Add the line at the very end:
host all all 0.0.0.0/0 trust
(If IPv6:
host all all ::/0 trust) 
2. Restart the database service
# service postgresql restart
3. Disable the firewall
# rcSuSEfirewall2 stop
# chkconfig SuSEfirewall2 off
# chkconfig SuSEfirewall2_init off

被接受的答案对我没有用。但是在修改了 pg_hba.conf 文件之后,它起作用了。另外,我使用的是 PostgreSQL 11。 - jake wong

0

取消注释 listen_address 行并引入 '*' 对我有用。一开始没有它也可以工作(使用带有 Postgres 数据库的 gunicorn)


你的回答可以通过提供更多支持信息来改进。请编辑并添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。 - Simas Joneliunas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接