PostgreSQL pg_hba.conf问题

9
在pg_hba.conf文件中,我有以下内容:
host    all             all             127.0.0.1/32            md5
host    all             all             samenet            md5

我还添加了


host    all             all             samehost            md5

两者都可以。

我正在使用pgAdminIII,尝试创建一个“新服务器注册”。当我连接到(localhost)时,它可以正常工作。但是当我将主机更改为实际的工作站名称时,它会显示:

FATAL: no pg_hba.conf entry for host "fe80::c81c:9e9c:6570:d0bf%20", user "postgres", database "postgres", SSL off 

附加信息

  • 操作系统:Windows 7 Ultimate 32位
  • PostgreSQL服务器9.0.2

非常感谢您的任何帮助。


这是因为当您尝试连接时,您正在连接到IPv6地址而不是IPv4地址,而且您的IPv6地址在pg_hba.conf中不存在。将您的IPv6地址添加到pg_hba.conf并重新加载PostgreSQL。 - Sean
1
尝试在pg_hba.conf文件中添加您的IP地址,类似于“host all all fe80::c81c:9e9c:6570:d0bf/128 md5”。 - Igor
1
根据手册,“samenet”匹配服务器直接连接到的任何子网中的任何地址,“samehost”匹配服务器自己的任何IP地址,我已经尝试了两种方法都没有成功。 - Nick Binnet
尝试调整postgresql.conf中的listen_addresses属性(http://www.postgresql.org/docs/9.0/static/runtime-config-connection.html#GUC-LISTEN-ADDRESSES)。可能默认值只是localhost。 - Grzegorz Szpetkowski
3
默认设置为"listen_addresses = '*'",我不需要更改。 :) - Nick Binnet
如果我将IPv6地址添加到pg_hba.conf中,它就可以工作了,“samehost”和“samenet”没有任何意义。 - Nick Binnet
6个回答

6

如果您在远程机器上运行此命令,请使用 -h <您的实际主机IPv4>。如果您使用机器名称,它将解析为v6,并且无法正常工作。 - Kajetan Abt

5

其他用户已经在这里回答了这个问题,但我想在这里展示答案,以便更清楚地向其他人解释:

在pg_hba.conf中像这样添加您的ipv6地址:

host      all        all       fe80::c81c:9e9c:6570:d0bf/128       md5

fe80::c81c:9e9c:6570:d0bf是您的IPv6地址。


3
请注意,samehostsamenet依赖的接口枚举代码非常依赖平台。(目前有5个不同平台的独立实现。)因此,对于一个设置有效的操作可能在其他地方无效。
话虽如此,类似的设置在我的Linux上有效,也就是说,我可以使用 samehostsamenet 连接到本地主机上的数据库服务器。
psql -d postgres -h 'fe80::xxxx:xxxx:xxxx:xxxx%eth0'

在适当设置 listening_addressessamenet 后。

因此,Windows 中的接口枚举代码可能会在某种情况下未能包括链路本地地址。

如果您已经将此问题隔离到足够程度,请向 PostgreSQL 发送错误报告以进一步分析该问题。


1

您也可以使用

host      all        all       ::1/128       md5

针对本地主机。


1

我曾经遇到过同样的问题,通过在两台机器上关闭ipv6支持来解决它。不确定这对你是否可行。


0

关闭可关闭的适配器上的IPV6。 然后执行以下操作

netsh interface teredo set state disabled

这将禁用那些无法从 GUI 看到的虚拟网络接口。


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