即使使用 'trust' 设置也无法连接到 postgres 数据库
Cannot connect to postgres database even with 'trust' settings
我目前正在努力使用 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 服务器 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
设置正确,它仍会要求您输入密码。只需按回车键而不输入密码,它应该允许您进入。(假设您的设置已正确设置。)
我目前正在努力使用 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 服务器 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
设置正确,它仍会要求您输入密码。只需按回车键而不输入密码,它应该允许您进入。(假设您的设置已正确设置。)