为什么用户不能在Postgres上login

我试图在Postgres中设置一个只读用户,但他们无法login。 我不确定下一步要解决这个问题。

当我尝试以用户XXXX身份login时,出现错误 – psql:FATAL:用户“XXXX”的密码validation失败

看看日志文件,我看到以下几行:

< 2014-05-20 10:22:24.830 NZST >FATAL: password authentication failed for user "XXXX" < 2014-05-20 10:22:24.830 NZST >DETAIL: Connection matched pg_hba.conf line 104: "host DATABASENAME XXXX 10.0.0.0/8 md5" 

当然,我已经尝试多次重置密码,但无济于事。 我试图从MD5更改为密码,没有工作。 有趣的是,将authentication机制设置为“信任”确实奏效。

我正在使用Postgres 9.3。

我无法删除这个用户重置它 – 我得到一个错误“错误:angular色”XXXX“不能被删除,因为一些对象依赖于它细节:数据库的权限DATABASENAME”

如果我创build一个新用户,那么新用户连接到数据库没有问题。 (我在pg_hba.conf中重复了相应的行并修改了用户名)

发出命令“授予所有DBNAME到XXXX”似乎没有任何区别。

当我做了一个\ ddp命令我得到

  Default access privileges Owner | Schema | Type | Access privileges ----------+--------+----------+------------------- postgres | public | sequence | XXXX=r/postgres postgres | public | table | XXXX=r/postgres 

我不完全确定为什么这应该阻止我完全放弃用户并重新创build它们,或者如何(安全地)修复这个问题。

任何有关正在发生的事情或如何进一步debugginglogin问题将深表赞赏。

当得到这个错误时:

psql:FATAL:用户“XXXX”的密码validation失败

尽pipe密码是正确的,接下来要检查的是帐户的有效性:

 SELECT usename, valuntil FROM pg_user; 

请参阅PostgreSQL用户在更改密码后无法连接到服务器,以了解PgAdmin中的错误可能会错误地重置此valuntil ,从而导致用户无法连接所提到的错误消息。

如果这是你的情况,你可以解决它:

 ALTER USER username VALID UNTIL 'infinity'; 

我已经挣扎了几次,并提出了以下方法。

1)修改pg_hba.conf,并为“本地”和“主机”条目设置authentication模式为“信任”:

当地所有的信任

主机全部都是127.0.0.1/32信任

2)重新启动数据库:postgres $ pg_ctl restart

3)进入数据库并设置postgres密码:

postgres $ psql

postgres =#改变用户postgres密码“mypassword”;

改变angular色

postgres =#\ q

4)在pg_hba.conf中将authentication机制设置回密码:

本地所有的所有密码

主机全部全部为127.0.0.1/32的密码

(我认为这也可以用于md5authentication,但还没有尝试过)

5)最后一次重新启动数据库:postgres $ pg_ctl restart