/
Вопросы и ответы
/
SQL
/

Как сбросить пароль postgresql

Как сбросить пароль postgresql

3 года назад

Nikolai Gagarinov

Ответы

1

Для сброса пароля в PostgreSQL можно воспользоваться следующими шагами:

  1. Первым шагом необходимо изменить файл конфигурации PostgreSQL, чтобы можно было войти в режим восстановления. Для этого откройте файл pg_hba.conf, который обычно находится в директории data вашего каталога базы данных PostgreSQL. Укажите trust в строке для метода аутентификации для вашей базы данных.

  2. После изменения файла конфигурации PostgreSQL, перезапустите сервер PostgreSQL, чтобы изменения вступили в силу.

  3. Теперь можно зайти в PostgreSQL без пароля командой psql -U postgres.

  4. Войдите в базу данных и сбросьте пароль с помощью команды ALTER USER postgres PASSWORD 'новый_пароль';, где postgres - имя пользователя, для которого нужно сбросить пароль, а 'новый_пароль' - новый пароль, который нужно установить.

  5. После того как вы установили новый пароль, не забудьте вернуть обратно метод аутентификации в файле pg_hba.conf на свои исходные параметры и перезапустите сервер PostgreSQL.

Теперь вы можете использовать новый пароль для доступа к вашей базе данных PostgreSQL.

3 года назад

Olga Pejenkova

0

Как сбросить пароль в PostgreSQL

Сброс нужен, когда пароль утерян и войти в базу уже невозможно. Суть: временно отключить проверку пароля, задать новый, включить обратно.

Шаг 1. Найти файл pg_hba.conf

1
sudo -u postgres psql -c "SHOW hba_file;"

Обычно файл лежит здесь:

1
2
/etc/postgresql/15/main/pg_hba.conf   # Debian / Ubuntu
/var/lib/pgsql/data/pg_hba.conf       # RHEL / CentOS

Шаг 2. Открыть файл и временно разрешить вход без пароля

1
sudo nano /etc/postgresql/15/main/pg_hba.conf

Найдите строку для локального подключения и замените метод на trust:

1
2
3
4
5
# было:
local   all   postgres   md5

# стало:
local   all   postgres   trust

Шаг 3. Перезапустить PostgreSQL

1
sudo systemctl restart postgresql

Шаг 4. Войти без пароля и задать новый

1
psql -U postgres

Шаг 5. Вернуть защищённый метод аутентификации

Откройте pg_hba.conf и верните md5 или scram-sha-256 на место:

1
local   all   postgres   scram-sha-256

Перезапустите сервер:

1
sudo systemctl restart postgresql

Шаг 6. Проверить, что новый пароль работает

1
psql -U postgres -W

Флаг -W заставит явно запросить пароль.

Разница между md5 и scram-sha-256

МетодБезопасность
trustБез пароля — только для восстановления
md5Устаревший, но широко поддерживается
scram-sha-256Современный, рекомендуется с PostgreSQL 10+

Если версия PostgreSQL 10 и выше — используйте scram-sha-256.

Важно

Не оставляйте метод trust в pg_hba.conf после восстановления. С ним любой пользователь на сервере войдёт в базу без пароля.

5 месяцев назад

Никита Вихров

0

Забытый пароль от PostgreSQL восстановить нельзя, его задают заново. Для этого временно разрешают вход без пароля в файле pg_hba.conf, меняют пароль и возвращают настройку обратно.

Сначала попробуйте войти без сброса

На Linux системный пользователь postgres обычно входит без пароля:

1
sudo -u postgres psql

Если вошли, сразу задайте пароль:

1
postgres=# \password postgres

Команда спросит новый пароль дважды. Если этот способ не сработал, переходите к сбросу.

Сброс на Linux

  1. Найдите файл настроек доступа. На Ubuntu и Debian: /etc/postgresql/<версия>/main/pg_hba.conf.

  2. Сохраните копию: sudo cp pg_hba.conf pg_hba.conf.bak.

  3. В строках local и host 127.0.0.1/32 замените метод scram-sha-256 или md5 на trust:

    1
    2
    local   all   all                 trust
    host    all   all   127.0.0.1/32  trust
  4. Перезапустите сервер: sudo systemctl restart postgresql.

  5. Войдите без пароля и задайте новый:

    1
    psql -U postgres -h 127.0.0.1
    1
    postgres=# \password postgres
  6. Верните исходный файл: sudo cp pg_hba.conf.bak pg_hba.conf и перезапустите сервер.

Пока в файле стоит trust, к базе может подключиться любой пользователь компьютера. Не оставляйте этот режим.

Сброс на Windows

  1. Откройте C:\Program Files\PostgreSQL\<версия>\data\pg_hba.conf в Блокноте от имени администратора.

  2. Замените scram-sha-256 на trust в строках с 127.0.0.1/32 и ::1/128.

  3. Перезапустите службу: Win + R → services.msc → postgresql-x64-<версия> → Перезапустить.

  4. Откройте SQL Shell (psql) или pgAdmin, подключитесь без пароля и выполните:

    1
    ALTER USER postgres WITH PASSWORD 'новый_пароль';
  5. Верните scram-sha-256 в pg_hba.conf и снова перезапустите службу.

Пароль от pgAdmin

pgAdmin 4 спрашивает два разных пароля:

  • Мастер-пароль pgAdmin защищает сохранённые пароли внутри программы. Если забыли его, нажмите Reset Master Password в окне ввода. Сохранённые пароли серверов удалятся, их придётся ввести заново.
  • Пароль пользователя базы, например postgres. Его сбрасывают способом выше.

Docker

1
docker exec -it <контейнер> psql -U postgres -c "ALTER USER postgres WITH PASSWORD 'новый_пароль';"

Внутри контейнера локальные подключения обычно разрешены без пароля.

Можно ли расшифровать пароль

Нет. PostgreSQL хранит хеш SCRAM-SHA-256, исходный пароль из него не получить. Поэтому пароль только задают заново.

Работу с PostgreSQL и правами пользователей разбирают на курсе «SQL для программистов».

15 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845