在Postgres上忘记管理员密码(Windows安装),无法重置

gen*_* b. 9 windows postgresql psql

我有一个Windows PostgreSQL安装.

根据一些帖子,没有为'postgres'用户设置默认密码,但我无法使用空密码字符串进行连接.

我尝试连接时收到此异常:

Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

最相关的提示是:https: //stackoverflow.com/a/25943227/1005607

Open  pg_hba.conf  
Change md5 -> TRUST  
then restart PgAdmin.
Run Code Online (Sandbox Code Playgroud)

我尝试了并重新启动了PGAdmin但是当我尝试连接时它仍然要求我输入密码:

在此输入图像描述

Windows中的任务管理器显示一些PostgreSQL进程正在运行.我不能把它们关掉.

我试过这个但它失败了:

pg_ctl restart

ERROR: 
pg_ctl: no database directory specified and environment variable PGDATA unset

psql.exe postgres
Password: (none)
ERROR:
psql: fe_sendauth: no password supplied
Run Code Online (Sandbox Code Playgroud)

如何重置用户'postgres'的默认密码?

gen*_* b. 9

根据AK47的答案和一些额外的信息,我通过以下方式修复它,

1)如果当前正在运行,请停止Postgres,命令行如下.需要给它'数据'目录.在我的例子中C:\ PostgreSQL\data

pg_ctl -D C:\PostgreSQL\data stop
Run Code Online (Sandbox Code Playgroud)

2)编辑文件pg_hba.conf(它也在\ data目录中),如下所示:

正如AK40所写,改变所有MD5引用信任,例如

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust
Run Code Online (Sandbox Code Playgroud)

3)现在运行

psql -U postgres
Run Code Online (Sandbox Code Playgroud)

4)在出现类型的PG命令提示符中,

ALTER USER Postgres WITH PASSWORD '<newpassword>';
Run Code Online (Sandbox Code Playgroud)

5)输入wqenter以退出PG提示,保存此项

6)现在开始Postgres

pg_ctl -D C:\PostgreSQL\data start
Run Code Online (Sandbox Code Playgroud)

7)可能希望MD5 -> Trust稍后恢复更改pg_hba.conf.