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

Как узнать пароль от postgresql

Как узнать пароль от postgresql

3 года назад

Nikolai Gagarinov

Ответы

0

Если вы забыли пароль от своей учетной записи в PostgreSQL или желаете узнать пароль другой учетной записи, то есть несколько способов сделать это:

  1. Использование SQL-команды ALTER USER: Вы можете войти в интерфейс командной строки PostgreSQL (через psql или другой клиент) под администраторской учетной записью и выполнить следующую команду для смены пароля: ALTER USER username PASSWORD 'new_password';

  2. Просмотр файла конфигурации PostgreSQL: В большинстве случаев, пароли пользователей хранятся в файле "pg_hba.conf" или "pg_ident.conf" в разделе "authentication settings". Однако, это не рекомендуется делать из соображений безопасности.

  3. Сброс пароля администратора (superuser) через файл pg_hba.conf: Если забыли пароль суперпользователя, можно попробовать изменить параметры доступа к базе данных в файле pg_hba.conf, чтобы разрешить подключение без пароля для текущего пользователя. После этого можно выполнить ALTER USER для смены пароля.

  4. Переустановка PostgreSQL: Если другие методы не помогли и доступ к базе данных критически необходим, можно переустановить PostgreSQL с обнулением паролей пользователей. Обратитесь к документации PostgreSQL для инструкций по переустановке.

Важно помнить, что обращение к файлам конфигурации и смена паролей в PostgreSQL требуют административных привилегий и должны выполняться с осторожностью, чтобы не нарушить безопасность и целостность базы данных.

3 года назад

Elena Gromova

0

Посмотреть пароль пользователя PostgreSQL нельзя: база хранит только хеш пароля. Если пароль забыт, его задают заново командой ALTER USER.

1
ALTER USER postgres WITH PASSWORD 'новый_пароль';

Почему пароль не показать

В pg_user на месте пароля звёздочки. В таблице pg_authid суперпользователь увидит строку вида SCRAM-SHA-256$4096:.... Это хеш: из него нельзя получить исходный пароль.

1
2
SELECT usename, passwd FROM pg_user;
-- passwd: ********

Где пароль мог сохраниться

Прежде чем сбрасывать, проверьте, не записан ли пароль где-то рядом:

ГдеЧто искать
Настройки приложения.env, DATABASE_URL=postgresql://user:пароль@host/db, settings.py, application.properties
Dockerпеременная POSTGRES_PASSWORD в docker-compose.yml или в выводе docker inspect <контейнер>
Файл ~/.pgpassстроки вида host:port:db:user:пароль
Переменная окруженияecho $PGPASSWORD
Установщик на Windowsпароль задавали при установке PostgreSQL, отдельно его нигде не показывают

pgAdmin и DBeaver хранят сохранённые пароли в зашифрованном виде. Посмотреть их в интерфейсе нельзя.

Как сбросить пароль, если не можете войти

Если вход в базу невозможен ни под каким пользователем:

  1. Найдите pg_hba.conf. На Ubuntu: /etc/postgresql/<версия>/main/pg_hba.conf, на Windows: C:\Program Files\PostgreSQL\<версия>\data\pg_hba.conf.
  2. В строке для локальных подключений замените scram-sha-256 или md5 на trust.
  3. Перезапустите PostgreSQL: sudo systemctl restart postgresql или через «Службы» в Windows.
  4. Подключитесь без пароля: psql -U postgres и выполните \password postgres.
  5. Верните прежний метод в pg_hba.conf и перезапустите сервер.

На Linux часто можно войти и без сброса: sudo -u postgres psql. Метод peer пускает системного пользователя postgres без пароля.

Docker

Если пароль из POSTGRES_PASSWORD не подходит, база была создана раньше с другим паролем: переменная применяется только при первом запуске с пустым томом. Смените пароль изнутри контейнера:

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

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

15 дней назад

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

+7 800 100 22 47

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

+7 495 085 21 62

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

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