Windows – Forgot Admin Password on Postgres (Windows Installation), can’t reset

postgresqlpsqlwindows

I have a Windows PostgreSQL installation.

According to some posts, there is no default password set for the 'postgres' user yet I can't connect using an empty password string.

I'm receiving this exception when I try to connect:

Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"

The most relevant tip was this:
https://stackoverflow.com/a/25943227/1005607

Open  pg_hba.conf  
Change md5 -> TRUST  
then restart PgAdmin.

I tried that and restarted PGAdmin but it still asks me for the password when I try to connect:

enter image description here

The task manager in Windows shows some PostgreSQL processes are running. I can't switch them off.

I have tried this and it failed:

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

How can I reset the default password for user 'postgres'?

Best Answer

Based on AK47's answer and some additional info I fixed it by doing the following,

1) Stop Postgres if currently running, command line below. Need to give it the 'data' dir. In my case C:\PostgreSQL\data

pg_ctl -D C:\PostgreSQL\data stop

2) Edit the file pg_hba.conf (it's also in the \data dir) as follows:

As AK40 wrote, change all MD5 references to trust , e.g.

# 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

3) Now run

psql -U postgres

4) In the PG Command Prompt that appears type,

ALTER USER Postgres WITH PASSWORD '<newpassword>';

5) Save this by typing wq enter to exit the PG Prompt

6) Now start Postgres

pg_ctl -D C:\PostgreSQL\data start

7) Might want to revert the MD5 -> Trust change later in the pg_hba.conf.

Related Topic