我目前正在努力使用postgres 9.1数据库来测试我的软件。我没有创建这个数据库,但我以前用postgres作为用户和密码登录。但是,现在我甚至无法使用运行数据库的同一台机器上的pgadmin3创建连接。我在pg-hba.conf中尝试了一百万个组合,如:
host all all 192.168.10.178/32 trust
要么
host all all 0.0.0.0/0 trust
要么
host example postgres 192.168.10.178/32 trust
要么
host all all ::1/128 md5
服务器的Ip4地址是192.168.10.178,子网掩码是255.255.245.0。该机器正在运行Windows Server 2008,我已使用管理员权限登录(如果这很重要)。在postgresql.conf中设置以下行:
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost', '*' = all
# (change requires restart)
port = 5432 # (change requires restart)
我对postgres并不熟悉,直到现在我读到的关于pg_hba.conf的内容并没有让我更进一步。我原本预计,至少从上面的第二个设置,它将让我登录没有密码不关心用户或主机IP。但不知怎的,pgadmin 3仍然要求用户'postgres'的密码,如果我使用'postgres'它只是告诉我:
password-authentication for user 'postgres' failed
拜托,谁能告诉我到底该怎么办?
这就是我的设置:
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all nnn.nn.nnn.nnn/32 trust
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
(显然n是我从实际IP地址隐藏的数字。)
正如@VaoTsun所说,确保线条符合您希望它们应用的顺序,因为匹配的第一个将是使用的。因此,如果你有samenet
设置为md5
,那么下一行你有samehost
设置为trust
,你会得到md5
因为samenet
对你的连接有效。
但是我强烈怀疑问题是IPv6
连接条目要么被注释掉,要么设置为md5
(或两者)。我不确切知道为什么,但我知道在很多2008服务器上,它将使用IPv6设置而不是IPv4。也许这取决于机器上是否启用了IPv6。根据我上面的设置设置该条目,我打赌它会这样做。
此外,除非您已将PGAdmin配置为保存密码,否则即使正确设置了trust
,它仍会要求您输入密码。只需按Enter键而不输入密码,它应该允许你进入。(假设您的设置已正确设置。)