Как восстановить доступ к PostgreSQL 10, если забыт пароль?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Забытый пароль от учетной записи администратора базы данных postgres — ситуация неприятная, но не критическая. Особенно часто с этим сталкиваются системные администраторы при поддержке серверов 1С, когда доступ к СУБД через pgAdmin становится невозможен, а приложение (сервер 1С) требует актуальных учетных данных для работы с базой. Рассмотрим подробнее, как восстановить доступ, не потеряв при этом данные, и разберем по шагам процесс смены пароля и его обновления в настройках 1С.

Разграничение паролей: pgAdmin vs PostgreSQL

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

  1. Мастер-пароль pgAdmin: Если программа запрашивает пароль сразу при запуске, еще до выбора сервера — это внутренняя защита самого инструмента pgAdmin. Если вы его забыли, доступ к самой базе данных не потерян. Вы можете сбросить его, удалив файл конфигурации pgadmin4.db в профиле пользователя, однако это приведет к удалению всех сохраненных ранее подключений к серверам.
  2. Пароль пользователя postgres: Это основной пароль суперпользователя СУБД. Именно он используется сервером приложений 1С для подключения к таблицам. Если утерян именно он, нам потребуется вмешательство в конфигурационные файлы сервера.

В рамках данной статьи мы сосредоточимся на восстановлении пароля именно второго типа — пользователя postgres.

Шаг 1. Поиск пароля в сохраненных файлах

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

В операционной системе Windows проверьте путь: %APPDATA%\postgresql\pgpass.conf. Откройте этот файл обычным текстовым редактором. Если там есть записи, они будут выглядеть в формате хост:порт:база:пользователь:пароль.

В системах Linux аналогичный файл называется .pgpass и обычно находится в домашней директории пользователя, под которым запускается служба (например, /var/lib/postgresql/.pgpass или ~/.pgpass).

Если файл пуст или отсутствует, переходим к процедуре сброса через режим доверия.

Шаг 2. Изменение режима авторизации в pg_hba.conf

Для того чтобы зайти в базу без пароля, нам нужно временно изменить политику безопасности сервера. Основным файлом, отвечающим за это, является pg_hba.conf. Выясним его расположение:

Откроем файл любым текстовым редактором с правами администратора и найдем строки, описывающие локальные подключения (обычно в самом низу файла). Нам нужно найти строки, где указан метод md5 или scram-sha-256, и временно заменить его на trust.

Рассмотрим пример того, как должна выглядеть строка после изменений:


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

Важно: Режим trust позволяет любому пользователю подключиться к СУБД без пароля, если подключение идет с того же сервера (localhost). Это дает нам возможность войти и сменить забытый пароль.

Шаг 3. Перезагрузка службы PostgreSQL

После сохранения изменений в файле pg_hba.conf, настройки не вступят в силу немедленно. Нам необходимо перезапустить службу СУБД:

В Windows откроем оснастку «Службы» (команда services.msc), найдем в списке PostgreSQL 10, нажмем правую кнопку мыши и выберем «Перезапустить».

В Linux выполним команду в терминале:

sudo systemctl restart postgresql

Шаг 4. Установка нового пароля

Теперь, когда сервер разрешает вход без пароля, запустим pgAdmin или воспользуемся консольной утилитой psql. В pgAdmin просто подключитесь к серверу (пароль запрашиваться не должен). Откройте Query Tool и выполните следующий SQL-запрос:

ALTER USER postgres WITH PASSWORD 'Ваш_Новый_Сложный_Пароль';

Проанализируем синтаксис: мы используем команду ALTER USER, указываем имя пользователя postgres и задаем новый пароль, заключенный в одинарные кавычки. Точка с запятой в конце обязательна.

Шаг 5. Возврат настроек безопасности

Критически важно: не оставляйте сервер в режиме trust! После успешной смены пароля вернитесь в файл pg_hba.conf и замените trust обратно на тот метод, который был до этого (обычно md5). После этого снова перезапустите службу PostgreSQL, как мы делали в Шаге 3.

Шаг 6. Обновление пароля в сервере приложений 1С

Многие пользователи задаются вопросом: будет ли приложение (1С:Предприятие) работать после смены пароля в СУБД? Ответ — нет. Так как пароль в самой базе изменился, сервер 1С не сможет авторизоваться и выдаст ошибку подключения. Разберем, как исправить ситуацию:

  1. Запустим «Администрирование серверов 1С Предприятия» (консоль MMC).
  2. Раскроем дерево серверов до списка информационных баз.
  3. Найдем нужную базу, нажмем на нее правой кнопкой мыши и выберем «Свойства».
  4. В открывшемся окне найдем поле «Пароль пользователя БД».
  5. Введем туда тот самый новый пароль, который мы только что установили в PostgreSQL.
  6. Нажмем «ОК».

После этого связь между сервером 1С и PostgreSQL будет восстановлена, и пользователи смогут продолжить работу. Если база данных не одна, эту процедуру нужно повторить для каждой базы, использующей учетную запись postgres.

Советы по предотвращению подобных ситуаций

Чтобы в будущем не прибегать к экстренным мерам, рекомендуется придерживаться следующих правил:

Таким образом, мы пошагово разобрали процесс восстановления доступа к PostgreSQL 10 и обеспечили корректную работу всей связки программного обеспечения 1С. Помните, что безопасность СУБД — приоритетная задача, поэтому режим trust должен использоваться только в исключительных случаях на минимально необходимое время.

← На главную