我对PostreSQL很新。我整个上午都在努力让用户登录正常工作,而且我现在非常沮丧!
因此,我有一个PostGIS数据库,版本9.2,作为OpenGeo软件套件的一部分。我可以使用postgres用户访问数据库,但是想要创建一个具有数据库访问权限的组角色和用户,以便它可以在该数据库中创建表和更新/选择/删除等。
我可以创建一个有效的用户,我可以使用该用户登录。我可以创建一个组角色并为该角色分配权限。然后我可以将用户添加到组角色,然后可以不再登录!
当我将用户postgres添加到组时,该用户无法登录。我删除了该组,但无法登录仍然存在。
现在,我玩了很多pg_hba.conf。我现在可以以postgres身份登录,但只有启用了'trust',我才能使用任何软件登录,例如PGAdminIII。
对于出现问题的方法提出一些建议并再次启用经过身份验证的登录会很棒。
pg_hba:
Code:
# Database administrative login by Unix domain socket
local all postgres trust
local all gisadmin trust
# TYPE DATABASE USER ADDRESS METHOD
local all opengeo md5
local all opengeo md5
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all gisadmin localhost trust
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 md5
#host replication postgres ::1/128 md5
正如最后一点,我希望能够通过SSH隧道登录。我最初可以使用'postgres'用户做到这一点,但是现在我从一个组中添加并删除了该用户,我不能。
编辑:错误消息......
如果我使用正确的密码通过PGAdmin中的SSH隧道登录,则会收到错误“致命错误:用户的密码验证失败...”
如果我尝试通过没有密码的PGAdmin中的SSH隧道登录,则在设置信任选项时,我收到错误:“连接到服务器的错误:fe_sendauth:没有提供密码”。
当在本地登录时,仅通过SSH和psql发生第一个错误,但第二个错误消失了,我可以登录。
<\ n>输出\ du +:输出\ dg +
答案 0 :(得分:6)
我认为这种行为可能与pgAdminIII有关,因为我有类似的问题,似乎每次我使用pgAIII连接到我的db作为postgres并查看用户属性中的定义选项卡,“复选框” “过期日期”已经过检查,并且将1970年1月1日或19/12/1969设置为到期日期。 Daniel提出的解决方案是有效的,所以很明显问题是密码的到期。
似乎在pgAdmin 1.16.2中已经更正了此错误,您可以在更改日志中看到:
http://www.pgadmin.org/development/changelog.php
干杯