0

我目前正在为测试我的软件所需的 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

拜托,谁能告诉我到底该怎么办?

4

1 回答 1

3

这是我的设置的样子:

# 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,它应该允许您进入。(假设您的设置已正确设置。)

于 2017-12-18T12:52:59.523 回答