我错误地改变了postgres用户密码。我尝试更改pg_hba.config文件,我可以登录pgAdmin然后重置postgres密码并设置回pg_hba文件,以便只允许授权用户。不幸的是,当我打开pgAdmin时,它仍然输出一个身份验证错误。 我该怎么做?
答案 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成功重新连接。 非常感谢您的帮助。