pgAdmin密码恢复pg_hba无法正常工作

时间:2014-05-06 19:21:37

标签: postgresql passwords pgadmin

我错误地改变了postgres用户密码。我尝试更改pg_hba.config文件,我可以登录pgAdmin然后重置postgres密码并设置回pg_hba文件,以便只允许授权用户。不幸的是,当我打开pgAdmin时,它仍然输出一个身份验证错误。 我该怎么做?

3 个答案:

答案 0 :(得分:2)

以下是序列:

编辑pg_hba.conf,将连接更改为localhost的信任。

然后,重新启动数据库。

然后使用如下命令从localhost连接:

psql -Upostgres dbname

连接后,请更改密码:

alter role postgres with password 'newpass';

然后,您可以将pg_hba.conf更改回旧配置(不信任,可能是密码或md5)。

重新启动数据库

然后尝试:

psql -Upostgres dbname

系统会提示您输入密码,并提供新用户密码' (管他呢)。然后使用新更改的密码进行连接。

尝试连接pgAdmin,如果它正在连接(使用postgres作为连接用户从localhost),那么这应该可行。我唯一能想到的是pgAdmin是从外部主机连接的,只要确保你在pg_hba.conf文件中有它。

-g

答案 1 :(得分:0)

您是指 postgres 给系统用户还是db用户? 我假设你在谈论db用户,如果你有postgres系统用户,你可以尝试

  

用户> sudo su postgres

     

postgres的> PSQL

     

postgres =#alter user postgres with password' password';

如果您没有postgres系统用户或上述操作不起作用,您应该检查您的配置。尝试修改 pg_hba.conf ,添加如下所示的行:

  

本地所有[您的系统用户名] 127.0.0.1/32 trust

这将允许您的用户的所有本地连接以任何PSQL用户身份连接到postgresql db,而无需密码。更改配置文件后重新启动postgresql。

答案 2 :(得分:0)

问题已解决!在一遍又一遍地尝试相同的方法之后。我还使用http://www.hashkiller.co.uk/md5-decrypter.aspx

检查了postgres定义的密码哈希值
CREATE ROLE postgres LOGIN
  ENCRYPTED PASSWORD 'md53175bce1d3201d16594cebf9d7eb3f9d' 
它返回了postgrespostgres ...我很失望:/。 然后我注意到了postgres角色定义中的失效日期。

CREATE ROLE postgres LOGIN
  ENCRYPTED PASSWORD 'md53175bce1d3201d16594cebf9d7eb3f9d'
  SUPERUSER INHERIT CREATEDB CREATEROLE REPLICATION VALID UNTIL '1970-01-01 00:00:00';

我检查了pgAdmin角色属性,发现已于01/01/1970复选框已选中。我一定是不情愿地选择了它 取消选中该复选框后,我使用postgres postgres成功重新连接。 非常感谢您的帮助。