42

This morning I’ve been trying to connect the PostgreSQL database on my Windows 7 Professional desktop.

The default value is ‘postgres’, but sure enough I forgot what password I used when I originally installed it.

I have googled and found a post related to resetting your password. I followed the steps, but the end result is a bit different then mentioned in the post. I used—

net user postgres postgres

to reset the password for my database but instead of a success message I am getting:

"System error 5 has occurred. Access is denied."

system error. How do I avoid this error and reset the password?

0

3 Answers 3

45

(Note: Not much of this is relevant to readers using PostgreSQL 9.2 or above from the EDB installers, which now have a greatly simplified default install using the NETWORK SERVICE, though you can still configure other accounts).


I have used net user postgres postgres to reset the password for my database but instead of a success message I am getting "System error 5 has occurred. Access is denied."

You've reset (or tried to reset) the service account password. PostgreSQL won't run as Administrator for security reasons and the installer generally sets it up with a "postgres" user account in PostgreSQL 9.1 and older1. On Windows you can't start a service as a user without saving the password of the user in the registry, so that's what the installer does.

If you change the password for the Windows user account postgres, the PostgreSQL service can no longer start. So don't do that, you'll have to fix the service configuration to store the updated password.

Thankfully I think another mistake prevented you from doing that. It looks like you're probably running your command prompt without using "Run as Administrator" on an unprivileged Windows user account or a machine with UAC, so it isn't running with the access permissions required to change the password for the postgres user.

Before you try to change that password, make sure it's really what you want to do. What's the problem you're trying to solve here? Are you attempting to install a database update or something else that's asking for the password for the postgres Windows user?

Most likely you're just trying to log in to the database. For that, you use the (unfortunately completely unrelated) password stored in the database its self. Since you've lost/forgotten it you'll have to reset it:

  • Find your pg_hba.conf, usually in C:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • If necessary, set the permissions on it so that you can modify it; your user account might not be able to do so until you use the security tab in the properties dialog to give yourself that right by using an admin override. Alternately, find notepad / notepad++ in your start menu, right click, choose "Run as administrator", then use File->Open to open pg_hba.conf that way.
  • Edit it to set the "host" line for user "postgres" on host "127.0.0.1/32" to "trust". You can add the line if it isn't there; just insert:

    host all postgres 127.0.0.1/32 trust
    host all postgres ::1/128      trust # if IPv6 is in use
    

    before any other lines. (You can ignore comments, lines beginning with #).

  • Restart the PostgreSQL service from the Services control panel (start->run->services.msc)

  • connect using psql or PgAdmin-III or whatever you prefer
  • ALTER USER postgres PASSWORD 'postgres'
  • remove the line you added to pg_hba.conf or change it back
  • restart PostgreSQL again.

See: How do I reset the postgres password for PostgreSQL on Windows?


1. 9.2 now uses the NETWORKSERVICE account, which doesn't require a password, so this problem goes away.

12
  • 9
    You may also need an ip6 entry as well: "host all postgres ::1/128 trust" Commented Jan 3, 2014 at 17:46
  • Still got me out of trouble with postreSQL 9.6 on my dev machine. Unsure why people think it doesn't help > 9.2 Commented Nov 15, 2016 at 5:40
  • @darwindave Depends on your install. If you installed to use the NETWORKSERVICE user account, there's no servce account password. If you installed to use a dedicated service account like postgres or a domain account, then it can help. Commented Nov 15, 2016 at 10:36
  • Can you bring this answer up to date with 9.2+ too showing both methods for Windows? Commented Mar 9, 2017 at 19:25
  • 1
    @EvanCarroll If you're using NETWORK SERVICE there's no password to reset. If you installed on 9.2+ using a different account, the same information applies. And there's no change to the part around resetting the postgres superuser database account password. So there's not really any change needed. Commented Mar 10, 2017 at 1:29
5

You need to distinguish between your system (Windows) user called "postgres" and the database user with the same name.

Find your pg_hba.conf file - this controls access to the PostgreSQL server. You will need to edit it as a user with Administrator rights. Look for lines that mention user "postgres" and temporarily set the mode to "trust". Restart postgresql and then you should be able to connect without a password. Reset the password, then restore the file to its original settings and restart PostgreSQL.

The manual has details on authentication methods and the pg_hba.conf file.

0

If anyone else encounters this problem, while also using pgAdmin, I suggest you take a look at this: http://www.homebrewandtechnology.com/blog/graphicallychangepostgresadminpassword

1
  • 5
    You may want to add salient points of the article you link to directly to your post, otherwise this answer will become useless when (not if) the link goes stale.
    – mustaccio
    Commented May 23, 2017 at 19:05

Not the answer you're looking for? Browse other questions tagged or ask your own question.