Whether you lost password for postgres user or you’d just like to change it, the process is very simple. Unlike resetting lost password for MySQL’s root user, resetting postgres’ password is pretty straightforward and you’ll not experience any kind of downtime. This article explains how to change/reset password for postgres user in PostgreSQL 8.4 server that runs on CentOS 5.7, but I’ve thrown in some tips to help you out if you’re using Debian or Ubuntu Linux distro.
Changing postgres’ password, assuming you know current password (i.e. you can connect to PostgreSQL server), is pretty simple. You either become postgres user using su and then run
# su postgres $ psql
or you can connect to PostgreSQL server directly as current user with the following command and supply postgres’ password when asked
$ psql -U postgres
After connecting to PostgreSQL server, you should get something like
psql (8.4.7) Type "help" for help. postgres=#
To set new password, you can use
postgres=# \password Enter new password: Enter it again: postgres=#
This meta command sends an SQL statement to PostgreSQL server containing an already encrypted password. You can run the equivalent SQL query, which is a bit harder to remember
ALTER USER postgres WITH ENCRYPTED PASSWORD 'MyNewPassword';
If you’ve forgotten your PostgreSQL password, you can relax. Resetting forgotten password is very easy and it’s nowhere near as complex as with MySQL, which requires stopping and starting the server with –skip-grant-tables switch and losing valuable uptime.
So, to reset postgres’ password you should open
pg_hba.conf config file which is located in
/var/lib/pgsql/data/ if you use CentOS or RHEL. If you use Debian or Ubuntu, you should find this file in
pg_hba.conf you should have the following line
local all postgres md5
This line defines that user postgres can connect to any database using md5 authentication method. In order to reset user’s password, you should set ident method instead of md5. So, the modified line should look like
local all postgres ident
If you don’t see the mentioned line in your
pg_hba.conf config file, then your PostgreSQL server is probably configured for all users to authenticate in the same way with
local all all md5
If this is the case, you can simply add custom rule just for user postgres as explained above.
After changing authentication method for user postgres and saving changes in
pg_hba.conf, you’ll need to reload PostgreSQL server. On CentOS and RHEL you can use
# service postgresql reload
On Debian and Ubuntu you can reload PostgreSQL with
# /etc/init.d/postgresql reload
If you try to connect to PostgreSQL server with psql utility, you’ll notice that you’ll be logged in right away. To change your password simply use
\password meta-command as explained above. After you reset your password, don’t forget to restore original configuration in
pg_hba.conf and again reload PostgreSQL server.