2017-01-02 180 views
0

也许这个问题重复,但我没有得到任何解决方案我使用的是centos 7和Postgres 9.3。 虽然连接PostgreSQL服务器它通过错误,Postgres服务器拒绝连接

错误

拒绝连接在服务器上的主机 “localhost” 的运行(:: 1) 和端口接受TCP/IP连接5432

即使我设置pg_hba.config文件,但我仍得到相同的错误 我试图删除postmaster.pid,但我得到一个错误no such file and no pid exist 请告诉我解决

回答

0

我有同样的问题,我解决了这个与解释:

“野刺在黑暗中:你的机器上一个IPv6解析器其中localhost默认的IPv6地址::1,但在的listen_addresses postgresql.conf设置为127.0.0.10.0.0.0而不是*或者您正在使用一个较旧的PostgreSQL,该库使用的C库不具有透明的IPv6支持。

变化listen_addresseslocalhost并确保localhost解析为两个IPv4IPv6地址,或将其设置为::1127.0.0.1明确指定两个IPv4IPv6。或者只需将其设置为*即可在所有接口上侦听。另外,如果你不关心IPv6,连接到127.0.0.1,而不是localhost“。

参考链接here

我觉得thispost也可以帮助你。

+0

在我的机器上listen_addresses设置为*已经 –

+0

请检查一下你的database.yml是否与你的端口相同,默认情况下在我的postgresql-9.2上用5433代替5432,别忘了重启postgres服务器,好运气 –

+0

如果不工作,请参阅我的编辑,这个错误可以用变量形式解决,取决于可以是什么 –

0

请检查是否防火墙允许连接
如果在Ubuntu上有命令sudo ufw status
结果会是这样的

To       Action  From 
--       ------  ---- 
22       LIMIT  Anywhere     
443      ALLOW  Anywhere     
80       ALLOW  Anywhere     
8000      ALLOW  Anywhere     
Nginx Full     ALLOW  Anywhere     

您可以看到端口5432不被允许。
现在运行命令sudo ufw allow 5432/tcp和 检查UFW状态
sudo ufw status现在将返回

22       LIMIT  Anywhere     
443      ALLOW  Anywhere     
80       ALLOW  Anywhere     
8000      ALLOW  Anywhere     
Nginx Full     ALLOW  Anywhere     
5432/tcp     ALLOW  Anywhere  

如果这不起作用,你可能可能还没有允许的IP听Postgres的。
更改listen_address = 'localhost'listen_address = '*'postgres.conf文件。