Postgres密码authentication失败

我试图用我的Windows机器的postgres用户login到我的服务器与Pgadmin。

但它一直给我这个错误:

psql: FATAL: password authentication failed for user "postgres" 

那么我试图用命令行loginpsql,这给了我同样的错误。 然后,我把pg_hba.conf中的本地条目信任后,使用psql将密码重置为“testing”。 然后我把条目放回到md5,并尝试使用密码“test”login。

在psql中我使用了这些命令:

 ALTER ROLE postgres WITH PASSWORD 'test'; ALTER ROLE postgres PASSWORD 'test'; ALTER USER postgres WITH PASSWORD 'test'; ALTER USER postgres PASSWORD 'test'; 

而这个特殊的psql命令

 \password 

每次我将pg_hba.conf本地条目返回到md5,并尝试使用psqllogin:

 psql -U postgres 

然后我被要求input密码。 进入'testing'后,psql给了我同样的错误,如前所述。

当然,在每次更改pg_hba文件后,我都重新启动了postgresql。 我用“su postgres”来使用psql。

所以,尽pipe我可以按照通常的方式更改密码,但并不接受密码。

我希望有人能够帮助我。

一些信息:

Postgresql 9.1 Ubuntu 12.04

Pg_hba文件(根据要求)

 local all postgres md5 local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 host all all <my-ip-address>/32 md5 

当我想修改密码时,我改变了最顶级的md5信任。 我想提一下,这个configuration以前没有问题。

结果

 sudo -u postgres psql -x -c "select * from pg_user where usename='postgres'" 

是:

 usename | postgres usesysid | 10 usecreatedb | t usesuper | t usecatupd | t userepl | t passwd | ******** valuntil | 1970-01-01 00:00:00+01 useconfig | 

如最近的编辑所示,密码有效期至1970年,这意味着它目前是无效的。 这解释了错误消息,就像密码不正确一样。

重置有效性:

 ALTER USER postgres VALID UNTIL 'infinity'; 

在最近的一个问题中,另一个用户和用户帐号和PG-9.2有同样的问题:

PostgreSQL – 添加组angular色后密码validation失败

所以显然有一种方法可以无意中在Unix纪元(1970年1月1日, abstimetypes的最小可能值)上设置假密码的有效性。 PG本身或某些客户端工具中可能会出现这种情况。

编辑 :它变成一个pgadmin的错误。 请参阅https://dba.stackexchange.com/questions/36137/

pg_hba.conf条目按IP地址定义login方法。 您需要显示pg_hba.conf的相关部分以获得适当的帮助。

改变这一行:

 host all all <my-ip-address>/32 md5 

反映您的本地networking设置。 所以,如果你的IP地址是192.168.16.78 (class C),掩码是255.255.255.0 ,那就把这个:

 host all all 192.168.16.0/24 md5 

确保您的WINDOWS MACHINE在networking192.168.16.0然后重试。

我遇到了这个问题,这里的答案对我不起作用。 我无法弄清楚为什么我不能login,并得到上述错误。

事实certificate,postgresql将用户名保存为小写,但在身份validation期间,它使用大写和小写。

 CREATE USER myNewUser WITH PASSWORD 'passWord'; 

将使用用户名'mynewuser'和密码'passWord'创build一个用户。

这意味着您必须使用“mynewuser”进行身份validation,而不是使用“myNewUser”进行身份validation。 对于像我这样的pgsql新手来说,这是令人困惑的。 我希望它能帮助那些遇到这个问题的人。