致命:主机“fe80 :: 1%lo0”没有pg_hba.conf条目

时间:2014-04-28 18:39:13

标签: sql ruby-on-rails database postgresql ssl

当我尝试连接数据库或rails s时,有人可以帮助我解决这个问题吗?

在我的pg_hba.conf文件中,我有:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     Andrew                                trust
#host    replication     Andrew        127.0.0.1/32            trust
#host    replication     Andrew        ::1/128                 trust

local all all md5

也许我做错了?

由于

6 个答案:

答案 0 :(得分:22)

我遇到了同样的问题。不知何故,这条线被添加到我的/ etc / hosts文件中:

fe80::1%lo0    localhost

注释掉/从/ etc / hosts中删除该行应该修复它

sudo vi /etc/hosts
#fe80::1%lo0    localhost

答案 1 :(得分:15)

我在OSX 10.9.3和Postgres 9.3.4。

我设法通过以下方式解决了这个问题:

首先通过使用pg_hba.conf启动psql并执行SHOW hba_file;来找到您的psql -h 127.0.0.1文件:

              hba_file
-------------------------------------
 /usr/local/var/postgres/pg_hba.conf
(1 row)

现在将以下行添加到pg_hba.conf

host    all             all             fe80::1%lo0/128         trust

并通过psql内的select pg_reload_conf();重新加载配置。

现在您应该可以通过psql -h fe80::1%lo0进行连接。

答案 2 :(得分:3)

哦,这是一个有趣的。

假设您正在连接localhost(您没有说并且没有显示您的database.yml),localhost似乎正在解析为an IPv6 link-local address with zone index

如果您使用::1127.0.0.1,则应该有效。

这很可能是操作系统错误配置或错误,因此如果您想要有任何具体建议,那么应该在问题中添加更多详细信息(请参阅上面的评论)。

答案 3 :(得分:1)

对我而言,原因是致电sudo rails server -p 80

我将rails服务器绑定到端口80,这样我就不必在开发期间在URL localhost:3000中指定端口。这似乎是将fe80::1%lo0»localhost写入我的/etc/hosts文件。

尝试在主机文件中注释掉该行,然后运行rails s -p 3000

答案 4 :(得分:0)

实际上,

当我执行pg_dump命令以备份我的服务器数据库(外部)时,我发生同样的错误

'/Applications/Postgres.app/Contents/Versions/9.3/bin'/pg_dump -d "<database_name>" -h <server_name> -U <db_user_name> -f <destination_path>

我通过将<server_name>替换为我的实际服务器IP(10.1.0.18)来解决它(解决方法)。

所以这里的问题是我的系统没有理解<server_name>主机。

在/ private / etc / hosts文件中添加<server_name>主机时,它可能会永久解决。

答案 5 :(得分:-1)

另一种变体:如果网络中未使用IPv6,则可以禁用它。在Windows上,IPv6服务也可以被禁用。