Как сменить пароль postgres на windows

Забыли пароль учетной записи postgres в PostgreSQL? Выполнить сброс не сложно. Для этого необходимо выполнить пару манипуляций.

Забыли пароль учетной записи postgres в PostgreSQL? Выполнить сброс не сложно. Для этого необходимо выполнить пару манипуляций.

1. Правим файл pg_hba.conf

Находим файл в папке Data директории установки PostgreSQL. В Windows путь выглядит примерно так c:Program FilesPostgreSQL9.2.4-1.1Cdata

В этом файле нужно найти такие строчки

# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 md5

Меняем md5 на trust.

2. Удаляем файл pgpass.conf

В Windows этот файл находится в c:UsersAdministratorAppDataRoamingpostgresql

Здесь хранится старый пароль от PostgreSQL. Простое изменение хранимого здесь пароля мне не помогло. Поэтому я его просто удалил.

3. Меняем пароль в pgAdmin

Запускаем pgAdmin и нам предлагается ввести пароль. Если отметить галочку сохранить, то пароль будет сохранен в  pgpass.conf и больше программой запрашиваться не будет.

Чтобы обеспечить безопасность использования паролей необходимо вернуть алгоритм шифрования md5. Для этого в файле pg_hba.conf параметр trust обратно меняем на md5.

Для подключения на локальном компьютере к PostgreSQL с помощью psql, pg_dump в локальных адресах  IPv4 127.0.0.1/32 и IPv6 ::1/128 значение trust нужно оставить.

Спасибо софт-сетап

Join @AdmNtsRu on Telegram

Смотрите также:

How do I change the password for a PostgreSQL user?

Peter Mortensen's user avatar

asked Oct 4, 2012 at 5:45

Saad's user avatar

3

To log in without a password:

sudo -u user_name psql db_name

To reset the password if you have forgotten:

ALTER USER user_name WITH PASSWORD 'new_password';

rmtheis's user avatar

rmtheis

5,79712 gold badges60 silver badges76 bronze badges

answered Oct 4, 2012 at 5:55

solaimuruganv's user avatar

solaimuruganvsolaimuruganv

25.8k1 gold badge18 silver badges23 bronze badges

22

To change the PostgreSQL user’s password, follow these steps:

  1. log in into the psql console:

    sudo -u postgres psql
    
  2. Then in the psql console, change the password and quit:

    postgres=# password postgres
    Enter new password: <new-password>
    postgres=# q
    

Or using a query:

ALTER USER postgres PASSWORD '<new-password>';

Or in one line

sudo -u postgres psql -c "ALTER USER postgres PASSWORD '<new-password>';"

Note:

If that does not work, reconfigure authentication by editing /etc/postgresql/9.1/main/pg_hba.conf (the path will differ) and change:

local     all         all             peer # change this to md5

to

local     all         all             md5 # like this

Then restart the server:

sudo service postgresql restart

Peter Mortensen's user avatar

answered Oct 4, 2012 at 5:50

Clint Bugs's user avatar

Clint BugsClint Bugs

11.2k1 gold badge11 silver badges11 bronze badges

10

You can and should have the users’ password encrypted:

ALTER USER username WITH ENCRYPTED PASSWORD 'password';

Peter Mortensen's user avatar

answered Feb 21, 2015 at 8:58

yglodt's user avatar

yglodtyglodt

13.3k14 gold badges86 silver badges125 bronze badges

4

I believe the best way to change the password is simply to use:

password

in the Postgres console.

Per ALTER USER documentation:

Caution must be exercised when specifying an unencrypted password with
this command. The password will be transmitted to the server in
cleartext, and it might also be logged in the client’s command history
or the server log. psql contains a command password that can be used
to change a role’s password without exposing the cleartext password.

Note: ALTER USER is an alias for ALTER ROLE

xlm's user avatar

xlm

6,40413 gold badges54 silver badges54 bronze badges

answered Aug 30, 2017 at 16:55

Viktor Nordling's user avatar

Viktor NordlingViktor Nordling

8,4044 gold badges26 silver badges23 bronze badges

6

To change the password using the Linux command line, use:

sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"

Peter Mortensen's user avatar

answered May 25, 2015 at 23:14

Vajira Lasantha's user avatar

Vajira LasanthaVajira Lasantha

2,4053 gold badges22 silver badges39 bronze badges

3

To the change password:

 sudo -u postgres psql

Then

password postgres

Now enter the new password and confirm.

Then q to exit.

Peter Mortensen's user avatar

answered Jun 29, 2019 at 19:09

Akitha_MJ's user avatar

Akitha_MJAkitha_MJ

3,64822 silver badges18 bronze badges

1

Go to your PostgreSQL configuration and edit file pg_hba.conf:

sudo vim /etc/postgresql/9.3/main/pg_hba.conf

Then change this line:

Database administrative login by Unix domain socket
local      all              postgres                                md5

to:

Database administrative login by Unix domain socket
local   all             postgres                                peer

Then restart the PostgreSQL service via the ‘sudo’ command. Then

psql -U postgres

You will be now entered and will see the PostgreSQL terminal.

Then enter

password

And enter the new password for the PostgreSQL default user. After successfully changing the password again, go to the pg_hba.conf and revert the change to «md5».

Now you will be logged in as

psql -U postgres

with your new password.

Peter Mortensen's user avatar

answered Oct 9, 2014 at 14:03

Murtaza Kanchwala's user avatar

3

Setting up a password for the postgres role

sudo -u postgres psql

You will get a prompt like the following:

postgres=#

Change password to PostgreSQL for user postgres

ALTER USER postgres WITH ENCRYPTED PASSWORD 'postgres';

You will get something as follows:

ALTER ROLE

To do this we need to edit the pg_hba.conf file.

(Feel free to replace nano with an editor of your choice.)

sudo nano /etc/postgresql/9.5/main/pg_hba.conf

Update in the pg_hba.conf file

Look for an uncommented line (a line that doesn’t start with #) that has the contents shown below. The spacing will be slightly different, but the words should be the same.

    local   postgres   postgres   peer

to

    local   postgres   postgres   md5

Now we need to restart PostgreSQL, so the changes take effect

sudo service postgresql restart

Peter Mortensen's user avatar

answered Oct 30, 2021 at 10:05

CHAVDA MEET's user avatar

CHAVDA MEETCHAVDA MEET

6798 silver badges14 bronze badges

0

To request a new password for the postgres user (without showing it in the command):

sudo -u postgres psql -c "password"

answered Mar 3, 2018 at 4:05

lcnicolau's user avatar

lcnicolaulcnicolau

3,1224 gold badges38 silver badges52 bronze badges

This was the first result on google, when I was looking how to rename a user, so:

ALTER USER <username> WITH PASSWORD '<new_password>';  -- change password
ALTER USER <old_username> RENAME TO <new_username>;    -- rename user

A couple of other commands helpful for user management:

CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;

Move user to another group

ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;

answered Apr 21, 2016 at 20:53

Salvador Dali's user avatar

Salvador DaliSalvador Dali

209k145 gold badges690 silver badges749 bronze badges

If you are on Windows.

Open pg_hba.conf file and change from md5 to peer.

Open cmd and type psql postgres postgres.

Then type password to be prompted for a new password.

Refer to this Medium post for further information & granular steps.

Peter Mortensen's user avatar

answered Jun 13, 2020 at 19:27

Timothy Macharia's user avatar

Timothy MachariaTimothy Macharia

2,4611 gold badge19 silver badges26 bronze badges

3

The configuration that I’ve got on my server was customized a lot, and I managed to change the password only after I set trust authentication in the pg_hba.conf file:

local   all   all   trust

Don’t forget to change this back to password or md5.

Peter Mortensen's user avatar

answered Jan 11, 2014 at 20:39

ruruskyi's user avatar

ruruskyiruruskyi

1,9912 gold badges26 silver badges37 bronze badges

2

For my case on Ubuntu 14.04 (Trusty Tahr), installed with PostgreSQL 10.3: I need to follow the following steps

  • su - postgres to switch the user to postgres

  • psql to enter the PostgreSQL shell

  • password and then enter your password

  • Q to quit the shell session

  • Then you switch back to root by executing exit and configure your pg_hba.conf (mine is at /etc/postgresql/10/main/pg_hba.conf) by making sure you have the following line

    local all postgres md5

  • Restart your PostgreSQL service by service postgresql restart

  • Now switch to the postgres user and enter the PostgreSQL shell again. It will prompt you for a password.

Peter Mortensen's user avatar

answered Mar 25, 2018 at 19:47

haxpor's user avatar

haxporhaxpor

2,3173 gold badges26 silver badges45 bronze badges

1

Use this:

password

Enter the new password you want for that user and then confirm it.
If you don’t remember the password and you want to change it, you can log in as «postgres» and then use this:

ALTER USER 'the username' WITH PASSWORD 'the new password';

Peter Mortensen's user avatar

answered Feb 12, 2018 at 11:52

Chris Dare's user avatar

Chris DareChris Dare

1511 silver badge8 bronze badges

TLDR:

On many systems, a user’s account often contains a period, or some sort of punctuation (user: john.smith, horise.johnson). In these cases, a modification will have to be made to the accepted answer above. The change requires the username to be double-quoted.

Example

ALTER USER "username.lastname" WITH PASSWORD 'password';

Rationale:

PostgreSQL is quite picky on when to use a ‘double quote’ and when to use a ‘single quote’. Typically, when providing a string, you would use a single quote.

Peter Mortensen's user avatar

answered Jun 1, 2020 at 18:28

FlyingV's user avatar

FlyingVFlyingV

1,89718 silver badges15 bronze badges

1

This is similar to other answers in syntax, but it should be known that you can also pass the MD5 hash value of the password, so you are not transmitting a plain text password.

Here are a few scenarios of unintended consequences of altering a users password in plain text.

  1. If you do not have SSL and are modifying remotely you are transmitting the plain text password across the network.
  2. If you have your logging configuration set to log DDL statements log_statement = ddl or higher, then your plain text password will show up in your error logs.
  3. If you are not protecting these logs, it’s a problem.
  4. If you collect these logs/ETL them and display them where others have access, they could end up seeing this password, etc.
  5. If you allow a user to manage their password, they are unknowingly revealing a password to an administrator or low-level employee tasked with reviewing logs.

With that said, here is how we can alter a user’s password by building an MD5 hash value of the password.

  • PostgreSQL, when hashing a password as MD5, salts the password with the user name and then prepends the text «md5» to the resulting hash.

  • Example: «md5″+md5(password + username)

  • In Bash:

    echo -n "passwordStringUserName" | md5sum | awk '{print "md5"$1}'
    

    Output:

    md5d6a35858d61d85e4a82ab1fb044aba9d
    
  • In PowerShell:

    [PSCredential] $Credential = Get-Credential
    
    $StringBuilder = New-Object System.Text.StringBuilder
    
    $null = $StringBuilder.Append('md5');
    
    [System.Security.Cryptography.HashAlgorithm]::Create('md5').ComputeHash([System.Text.Encoding]::ASCII.GetBytes(((ConvertFrom-SecureStringToPlainText -SecureString $Credential.Password) + $Credential.UserName))) | ForEach-Object {
        $null = $StringBuilder.Append($_.ToString("x2"))
    }
    
    $StringBuilder.ToString();
    
    ## OUTPUT
    md5d6a35858d61d85e4a82ab1fb044aba9d
    
  • So finally our ALTER USER command will look like

    ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
    
  • Relevant links (note I will only link to the latest versions of the documentation. For older, it changes some, but MD5 is still supported a ways back.)

  • create role

  • The password is always stored encrypted in the system catalogs. The ENCRYPTED keyword has no effect, but is accepted for backwards compatibility. The method of encryption is determined by the configuration parameter password_encryption. If the presented password string is already in MD5-encrypted or SCRAM-encrypted format, then it is stored as-is regardless of password_encryption (since the system cannot decrypt the specified encrypted password string, to encrypt it in a different format). This allows reloading of encrypted passwords during dump/restore.

  • Configuration setting for password_encryption

  • PostgreSQL password authentication documentation

  • Building PostgreSQL password MD5 hash value

Peter Mortensen's user avatar

answered Aug 20, 2019 at 19:52

jkdba's user avatar

jkdbajkdba

2,2383 gold badges21 silver badges32 bronze badges

And the fully automated way with Bash and expect (in this example we provision a new PostgreSQL administrator with the newly provisioned PostgreSQL password both on OS and PostgreSQL run-time level):

  # The $postgres_usr_pw and the other Bash variables MUST be defined
  # for reference the manual way of doing things automated with expect bellow
  #echo "copy-paste: $postgres_usr_pw"
  #sudo -u postgres psql -c "password"
  # The OS password could / should be different
  sudo -u root echo "postgres:$postgres_usr_pw" | sudo chpasswd

  expect <<- EOF_EXPECT
     set timeout -1
     spawn sudo -u postgres psql -c "\password"
     expect "Enter new password: "
     send -- "$postgres_usr_pwr"
     expect "Enter it again: "
     send -- "$postgres_usr_pwr"
     expect eof
EOF_EXPECT

  cd /tmp/
  # At this point the 'postgres' executable uses the new password
  sudo -u postgres PGPASSWORD=$postgres_usr_pw psql 
    --port $postgres_db_port --host $postgres_db_host -c "
  DO $$DECLARE r record;
     BEGIN
        IF NOT EXISTS (
           SELECT
           FROM   pg_catalog.pg_roles
           WHERE  rolname = '"$postgres_db_useradmin"') THEN
              CREATE ROLE "$postgres_db_useradmin" WITH SUPERUSER CREATEROLE
              CREATEDB REPLICATION BYPASSRLS
 PASSWORD '"$postgres_db_useradmin_pw"' LOGIN ;
        END IF;
     END$$;
  ALTER ROLE "$postgres_db_useradmin" WITH SUPERUSER CREATEROLE
  CREATEDB REPLICATION BYPASSRLS
PASSWORD  '"$postgres_db_useradmin_pw"' LOGIN ;
 "

Peter Mortensen's user avatar

answered Oct 20, 2019 at 8:35

Yordan Georgiev's user avatar

Yordan GeorgievYordan Georgiev

4,8681 gold badge52 silver badges53 bronze badges

Change password to «postgres» for user «postgres»:

# ALTER USER postgres WITH ENCRYPTED PASSWORD '<NEW-PASSWORD>';

Peter Mortensen's user avatar

answered Oct 30, 2021 at 10:34

rams zipppp's user avatar

1

I was on Windows (Windows Server 2019; PostgreSQL 10), so local type connections (pg_hba.conf: local all all peer) are not supported.

The following should work on Windows and Unix systems alike:

  1. backup pg_hba.conf to pg_hba.orig.conf e.g.
  2. create pg_hba.conf with only this: host all all 127.0.0.1/32 trust
  3. restart pg (service)
  4. execute psql -U postgres -h 127.0.0.1
  5. enter (in pgctl console) alter user postgres with password 'SomePass';
  6. restore pg_hba.conf from 1. above

answered Mar 5, 2021 at 13:46

Andreas Covidiot's user avatar

Andreas CovidiotAndreas Covidiot

4,1385 gold badges48 silver badges95 bronze badges

Check file pg_hba.conf.

In case the authentication method is ‘peer’, the client’s operating system user name/password must match the database user name and password. In that case, set the password for Linux user ‘postgres’ and the DB user ‘postgres’ to be the same.

See the documentation for details: 19.1. The pg_hba.conf File

Peter Mortensen's user avatar

answered Oct 2, 2020 at 17:30

Sufyan Elahi's user avatar

1

In general, just use the pgAdmin UI for doing database-related activity.

If instead you are focusing more in automating database setup for your local development, CI, etc.

For example, you can use a simple combination like this.

(a) Create a dummy super user via Jenkins with a command similar to this:

docker exec -t postgres11-instance1 createuser --username=postgres --superuser experiment001

This will create a super user called experiment001 in you PostgreSQL database.

(b) Give this user some password by running a NON-Interactive SQL command.

docker exec -t postgres11-instance1 psql -U experiment001 -d postgres -c "ALTER USER experiment001 WITH PASSWORD 'experiment001' "

PostgreSQL is probably the best database out there for command line (non-interactive) tooling. Creating users, running SQL, making backup of database, etc.

In general, it is all quite basic with PostgreSQL, and it is overall quite trivial to integrate this into your development setup scripts or into automated CI configuration.

Peter Mortensen's user avatar

answered Nov 1, 2019 at 17:41

99Sono's user avatar

99Sono99Sono

3,50627 silver badges38 bronze badges

Using pgAdmin 4:

Menu ObjectChange password…

Peter Mortensen's user avatar

answered Sep 8, 2022 at 12:59

Jhonnatan Panoch's user avatar

Most of the answers were mostly correct, but you need to look out for minor things. The problem I had was that I didn’t ever set the password of «postgres», so I couldn’t log into an SQL command line that allowed me to change passwords. These are the steps that I used successfully (note that most or all commands need sudo or root user):

  • Edit the pg_hba.conf file in the data directory of the DB cluster you’re trying to connect to.

    • The folder of the data directory can be found by inspecting the systemd command line, easily obtained with systemctl status postgresql@VERSION-DB_CLUSTER. Replace VERSION with your psql version and DB_CLUSTER with the name of your database cluster. This may be main if it was automatically created, so, e.g., postgresql@13-main. Alternatively, my Bash shell provided auto-complete after entering postgresql@, so you could try that or look for the PostgreSQL services in the list of all services (systemctl -a). Once you have the status output, look for the second command line after CGroup, which should be rather long, and start with /usr/lib/postgresql/13/bin/postgres or similar (depending on version, distro, and installation method). You are looking for the directory after -D, for example /var/lib/postgresql/13/main.
  • Add the following line: host all all 127.0.0.1/32 trust. This allows for all users on all databases to connect to the database via IPv4 on the local machine unconditionally, without asking for a password.

    This is a temporary fix and don’t forget to remove this line again later on. Just to be sure, I commented out the host all all 127.0.0.1/32 md5 (md5 may be replaced by scram-sha-256), which is valid for the same login data, just requiring a password.

  • Restart the database service: systemctl restart postgresql@... Again, use the exact service you found earlier.

  • Check that the service started properly with systemctl status postgresql@....

  • Connect with psql, and very importantly, force psql to not ask for a password. In my experience, it will ask you for a password even though the server doesn’t care, and will still reject your login if your password was wrong. This can be accomplished with the -w flag.

    The full command line looks something like this: sudo -u postgres psql -w -h 127.0.0.1 -p 5432. Here, postgres is your user and you may have changed that. 5432 is the port of the cluster-specific server and may be higher if you are running more than one cluster (I have 5434 for example).

  • Change the password with the password special command.

  • Remember to remove the password ignore workaround and restart the server to apply the configuration.

Peter Mortensen's user avatar

answered Apr 13, 2021 at 9:05

kleines Filmröllchen's user avatar

For a Windows user for the latest PostgreSQL version (greater than 10):

Go to your PostgreSQL installation location, and search for pg_hba.conf, you will find it in ..postgresdatapg_hba.conf.

Open that file with Notepad, and find this line:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
#..

Change the method from *md5* to *trust*:

# 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
# ...

Now go to your SQL shell (PSQL) and leave everything blank,

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]:

It will not ask for a password this time, and you will be logged in,

Now run this line:

  `ALTER USER yourusername WITH SUPERUSER`

Now you can leave the shell with q.

Again, go to the file pg_hba.conf and change METHOD from trust to md5 again, and save it.

Now log in with your new user and password, and you can check du for its attributes.

For a Windows user for the latest PostgreSQL version (greater than 10):

Go to your PostgreSQL installation location, and search for pg_hba.conf, you will find it in ..postgresdatapg_hba.conf.

Open that file with Notepad, and find this line:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
#..

Change the method from *md5* to *trust*:

# 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
# ...

Now go to your SQL shell (PSQL) and leave everything blank,

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]:

It will not ask for a password this time, and you will be logged in,

Now run this line:

  `ALTER USER yourusername WITH SUPERUSER`

Now you can leave the shell with q.

Again, go to the file pg_hba.conf and change METHOD from trust to md5 again, and save it.

Now log in with your new user and password, and you can check du for its attributes.

ALTER USER — change a database role

Synopsis

ALTER USER role_specification [ WITH ] option [ ... ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'

ALTER USER name RENAME TO new_name

ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter
ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL

where role_specification can be:

    role_name
  | CURRENT_ROLE
  | CURRENT_USER
  | SESSION_USER

Description

ALTER USER is now an alias for ALTER ROLE.

Compatibility

The ALTER USER statement is a PostgreSQL extension. The SQL standard leaves the definition of users to the implementation.

(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 FilesPostgreSQL9.1datapg_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.

Summary: in this tutorial, we will show you step by step how to reset the password of the postgres user in PostgreSQL.

For some reason, after installing PostgreSQL, you may forget the password of the postgres user. In this case, you need to know how to reset the password.

PostgreSQL uses the pg_hba.conf configuration file stored in the database data directory (e.g., C:Program FilesPostgreSQL12data on Windows) to control the client authentication. The hba in pg_hba.conf means host-based authentication.

To reset the password for the postgres user, you need to modify some parameters in this configuration file, login as postgres without a password, and reset the password.

The following steps show you how to reset a password for the postgres user:

Step 1. Backup the pg_hba.conf file by copying it to a different location or just rename it to pg_hba.conf.bk

Step 2. Edit the pg_dba.conf file and change all local connections from md5 to trust. By doing this, you can log in to the PostgreSQL database server without using a password.

# 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

Code language: PHP (php)

Step 3. Restart the PostgreSQL server. If you are on Windows, you can restart the PostgreSQL from Services:

Or run the following command from the window terminal:

pg_ctl -D "C:Program FilesPostgreSQL12data" restart

Code language: JavaScript (javascript)

The "C:Program FilesPostgreSQL12data" is the data directory.

Step 4. Connect to PostgreSQL database server using any tool such as psql or pgAdmin:

psql -U postgres

PostgreSQL will not require a password to login.

Step 5. Execute the following command to set a new password for the postgres user.

postgres=# ALTER USER postgres WITH PASSWORD 'new_password';

Code language: SQL (Structured Query Language) (sql)

Step 6. Restore the pg_dba.conf file, restart the PostgreSQL database server and connect to the PostgreSQL database server with the new password.

In this tutorial, you have learned how to reset the password of the postgres user.

Was this tutorial helpful ?

PG Admin Password Forgotten

Contents

  1. 1 Introduction
  2. 2 The Command Prompt Way
  3. 3 Using pgAdmin to Graphically Reset the Password
  4. 4 In Closing

Introduction

How to change postgres account password? In case of forgotten password, hence unable to access the database management GUI. This is my experience when using Windows. It might be the same with other operating system.

The Command Prompt Way

First let me put a note using command prompt technique. The GUI technique is much simpler and presented later in this same writeup.

To do this using command prompt. It is good to know that in windows there will be 2 account. One is postgres windows user account. The other is database admin account. Which is also called postgres.

  • Edit E:PostgreSQL9.1pg_hba.conf and set the localhost method to trust instead of md5. 
    Do not forget to save.
  • Use the usual Windows way to reset the password of windows user account.
  • Open up a command prompt and use runas to open another command prompt as postgres user.
  • open up Services manager and restart postgresql service. There might be need to update the postgres user account password setting in the service property at this step.
  • Now running psql will not ask any password.
  • Use the following sql to set the user password

ALTER USER Postgres WITH PASSWORD ‘<newpassword>’

  • Revert the pg_hba.conf localhost method back to md5 .
  • Restart postgresql service in Services manager.

Using pgAdmin to Graphically Reset the Password

This is simpler and I would say faster. Just accidentally found that if pg_hba.conf localhost method is set to trust. There is no need to enter password when connecting to the database using pgAdmin.

Some of the step are similar to when using command prompt technique.

1. Edit E:PostgreSQL9.1pg_hba.conf and set the localhost method to trust instead of md5. Do not forget to save.

pg_hba config file

2. Open up Services manager and restart postgresql service. 

restart postgresql service

3. Run pgAdmin and connect to the database. Note that it will not ask the password since we are in the trust mode.

Start pgAdmin

4. Scroll down to look for postgres database user under Login Roles and open up the properties windows.

Properties for user postgresql

5. Surprisingly there is a tab named Definition that allow for password change. Do the necessary!

Definition tab to change password

6. After this is done, revert back changes to pg_hba.conf file to md5 and restart the postgresql service in Services manager.

7. You should be able to connect to the database. This time using the new password!

In Closing

I learn the hard way about not writing up this stuff earlier. Wasting time looking for good tutorial on how to do this ;)

  • #1

Забыли пароль учетной записи postgres в PostgreSQL? Выполнить сброс не сложно. Для этого необходимо выполнить пару манипуляций. Останавливаем службу Postgres в службах windows. Переходим в каталог C:Program FilesPostgreSQL9.5data и правим там файл pg_hba.conf:

# 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

Меняем md5 на trust.

Удаляем файл pgpass.conf. В Windows этот файл находится в С:UsersAdministratorAppDataRoamingpostgresql. Здесь хранится старый пароль от PostgreSQL.

Запускаем службу Postgres.
Запускаем cmd и вводим там команду:

В командной строке PG, которая появляется:

ALTER USER Postgres WITH PASSWORD '<newpassword>';

Сохраните это, набрав wq enter, чтобы выйти из запроса PG
Если возникает ошибка при вводе команды, что команда не определена добавляем путь в path C:Program FilesPostgreSQL9.5bin
Возможно, вы захотите вернуться к изменению MD5 → Trust позже в pg_hba.conf.
Если изменения не сработали, тогда еще раз перезапустите службу Postgres и можете заходить под новым паролем.

Забыли пароль учетной записи postgres в PostgreSQL? Выполнить сброс не сложно. Для этого необходимо выполнить пару манипуляций.

1. Правим файл pg_hba.conf

Находим файл в папке Data директории установки PostgreSQL. В Windows путь выглядит примерно так c:Program FilesPostgreSQL9.2.4-1.1Cdata

В этом файле нужно найти такие строчки

# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 md5

Меняем md5 на trust.

2. Удаляем файл pgpass.conf

В Windows этот файл находится в c:UsersAdministratorAppDataRoamingpostgresql

Здесь хранится старый пароль от PostgreSQL. Простое изменение хранимого здесь пароля мне не помогло. Поэтому я его просто удалил.

3. Меняем пароль в pgAdmin

Запускаем pgAdmin и нам предлагается ввести пароль. Если отметить галочку сохранить, то пароль будет сохранен в  pgpass.conf и больше программой запрашиваться не будет.

Чтобы обеспечить безопасность использования паролей необходимо вернуть алгоритм шифрования md5. Для этого в файле pg_hba.conf параметр trust обратно меняем на md5.

Для подключения на локальном компьютере к PostgreSQL с помощью psql, pg_dump в локальных адресах  IPv4 127.0.0.1/32 и IPv6 ::1/128 значение trust нужно оставить.

Понравилась статья? Поделить с друзьями:
  • Как сменить папку сохранения клипов в windows 10
  • Как сменить папку загрузки в windows 10
  • Как сменить папку в командной строке windows 10
  • Как сменить папку onedrive windows 10
  • Как сменить панель пуск на windows 10