I have a PostgreSQL 8.4 database running on Windows, but I've lost the name of the superuser username, so am unable to connect.

I've already configured pg_hba.conf to use trust to allow connections without a password, but I still need to know the name of a valid user to login.

I've tried postgres, admin etc, but I always get:

psql: FATAL:  role "USERNAME" does not exist
link|improve this question
1  
Hmm, there should be 'postgres' user - it's there by default and it's hard to remove it, as it owns a lot of system tables/views/templates. Is that exact message you are getting? Is "USERNAME" being replaced by actual username you're entering? – rvs Sep 11 '11 at 7:29
"USERNAME" is being replaced by the actual username :) – Cocowalla Sep 11 '11 at 7:32
Ok, sorry - just checking. :) – rvs Sep 11 '11 at 7:38
feedback

1 Answer

up vote 6 down vote accepted

You can try to run PostgreSQL in single-user mode. On my system (Linux), I've been able to get superuser sql shell with following command: sudo -u postgres postgres90 --single postgres -D /var/lib/postgresql/9.0/data/.

sudo -u postgres here is to drop priveledges (postgres refuses to run under priveledged account`, other params should be easy to understand.

In single-user shell you should be able to create new user or SELECT * FROM pg_user;

link|improve this answer
Perfect, I was able to start the server in single-user mode, then use that to create a new superuser role – Cocowalla Sep 11 '11 at 8:04
feedback

Your Answer

 
or
required, but never shown

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