【问题标题】:FATAL: no pg_hba.conf entry for host "fe80::1%lo0"致命:主机“fe80::1%lo0”没有 pg_hba.conf 条目
【发布时间】:2014-06-14 10:52:35
【问题描述】:

当我尝试连接到数据库或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

也许我做错了?

谢谢

【问题讨论】:

  • 你的连接字符串是什么样的?你为什么不直接连接到 ::1 ?不相关,但您的 local all all md5 无法工作,因为它被您的 local all all trust 抢占了
  • @jjanes 我不确定“fe80::1%lo0” 来自哪里?我该如何回复::1
  • 操作系统?你在 Mac OS X 上吗?还有什么?什么操作系统/版本,PostgreSQL 版本?操作系统最近有什么变化吗?
  • @CraigRinger 感谢您的帮助!我使用的是 Mac OS X,版本 10.9.2。我正在使用我下载的 PostgreSQL 独立软件,版本 9.3.2.0。
  • fe80::1%lo0 是分配给环回 0 接口的 IPv6 链路本地地址,并且是有效的本地主机。它不应该从 /etc/hosts 中删除。正确的解决方案是按照@Daniel 的建议允许 pg_hba.conf 中的 ip 地址。

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


【解决方案1】:

哦,这很有趣。

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

如果您使用::1127.0.0.1,它应该可以工作。

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

【讨论】:

    【解决方案2】:

    我使用的是 OSX 10.9.3 和 Postgres 9.3.4。

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

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

                  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 进行连接了。

    【讨论】:

    • 这对解决它很有用,但如果它这样做,操作系统就会so损坏。有什么坏事了。就个人而言,如果我无法找到它,我会重新安装。
    • 谢谢,这对我有用!在 x86_64-apple-darwin14.0.0 上的 PostgreSQL 9.4.0
    【解决方案3】:

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

    fe80::1%lo0    localhost
    

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

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

    【讨论】:

    • 我的也有同样的东西。优胜美地。很奇怪。这似乎是一个优胜美地错误,或者可能是他们留下的创可贴。请参阅dba.stackexchange.com/questions/74167/… 我的连接问题奇怪地间歇性出现。
    • 你和我都是@felix!奇怪的是;在这种情况开始发生之前,我已经使用 Yosemite 10.10.1 好几天了。
    • 软件更新后我也发生了几次同样的事情。 OS X 10.9.5
    • 太棒了!帮我解决了那个问题。
    【解决方案4】:

    对我来说,原因是打电话给sudo rails server -p 80

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

    尝试在您的 hosts 文件中注释掉该行,然后运行 ​​rails s -p 3000

    【讨论】:

      【解决方案5】:

      其实

      当我执行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>
      

      我通过将我的&lt;server_name&gt; 替换为我的实际服务器 IP (10.1.0.18) 解决了它(解决方法)。

      所以这里的问题是我的系统不理解&lt;server_name&gt; 主机。

      在 /private/etc/hosts 文件中添加 &lt;server_name&gt; 主机可能会永久解决。

      【讨论】:

        【解决方案6】:

        另一个变体:如果网络中没有使用 IPv6,您可以禁用它。在 Windows 上也可以禁用 IPv6 服务。

        【讨论】:

        • 谷歌翻译:“仍然作为一个选项:如果网络不使用 ipv6,则只需将其关闭,如果 Windows 操作系统关闭支持服务 ipv6”
        猜你喜欢
        • 2015-08-31
        • 2013-10-19
        • 2014-10-27
        • 2020-05-19
        • 1970-01-01
        • 1970-01-01
        • 2010-11-27
        • 2021-06-10
        相关资源
        最近更新 更多