2011-07-10 43 views
8

pg_hba.conf中,我有PostgreSQL的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旗舰版32位
  • PostgreSQL服务器9.0.2

任何帮助,将不胜感激。

+0

这是因为当您尝试连接时,您将连接到IPv6地址,而不是IPv4地址,并且您的pg_hba.conf中不存在IPv6地址。将您的IPv6地址添加到您的pg_hba.conf并重新加载PostgreSQL。 – Sean

+1

尝试在pg_hba.conf中添加IP,例如“host all all fe80 :: c81c:9e9c:6570:d0bf/128 md5” – Igor

+1

根据手册,“samenet”与任何子网中的任何地址服务器直接连接到,“同一主机”匹配任何服务器自己的IP地址,我已经尝试过,但没有运气。 –

回答

3

请注意,samehostsamenet依赖的接口枚举代码非常依赖于平台。 (对于不同的平台,目前有5个独立的实现。)因此,对于一个设置可能不适用于其他地方。

尽管如此,类似的设置为我的作品在Linux上,也就是说,我可以连接到数据库服务器使用

psql -d postgres -h 'fe80::xxxx:xxxx:xxxx:xxxx%eth0' 

设置listening_addressessamenet适当后在本地主机上。

因此可以想象,Windows中的接口枚举代码无法包含链接本地地址。

如果您有足够的隔离这个问题,我会发送一个错误报告给PostgreSQL进一步分析问题。

1

我有同样的问题,并通过关闭两台机器上的ipv6支持来解决它。不知道这是否是您的选择。

4

这已经在这里找到答案由其他用户,但我想在这里展示的答案,使更多明确为他人:

pg_hba.conf中,添加您的IPv6地址是这样的:

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

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

1

您还可以使用

host  all  all  ::1/128  md5 

为本地主机。

0

关闭可以使用的适配器上的IPV6。 然后,执行

netsh interface teredo set state disabled 

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