Многие системные администраторы сталкиваются с ситуацией, когда стабильно работающая связка из 1С:Розница и СУБД PostgreSQL 13 внезапно перестает пускать пользователей в базу данных. Внешне это выглядит как ошибка аутентификации: платформа сообщает, что пароль пользователя базы данных не подходит. Давайте вместе разберем эту ситуацию по шагам, проанализируем причины инцидента и рассмотрим подробные инструкции по восстановлению работоспособности системы.
Прежде чем приступать к сбросу паролей, выясним причину, по которой СУБД внезапно перестала принимать учетные данные от сервера 1С (иногда это связано с нехваткой места). Рассмотрим несколько основных векторов проблемы.
5432 (по умолчанию для PostgreSQL) открыт в интернет без должной защиты, ботнеты могут подобрать простой пароль суперпользователя postgres, особенно если в системе есть пользователи без пароля. Злоумышленники меняют пароль, удаляют исходную базу 1С и создают новую с названием, содержащим требование выкупа (например, README_TO_RECOVER). Из-за этого при попытке зайти 1С не может авторизоваться, и единственным выходом в такой ситуации остается архивирование и восстановление баз.scram-sha-256 вместо привычного md5. Если настройки шифрования на сервере 1С и в СУБД разошлись (например, после обновления), авторизация будет падать с ошибкой.Часто администраторы меняют пароль суперпользователя через утилиту pgAdmin, но забывают, что платформа 1С об этом не знает. Проанализируем, как правильно обновить эти данные.
Если вы просто поменяли пароль в СУБД, вам необходимо зайти в оснастку Администрирование серверов 1С Предприятия. Разберем по шагам:
Важный нюанс (ошибка создания пустой базы): При редактировании свойств подключения нужно быть предельно осторожным. Если вы случайно измените поле База данных (имя базы в самом PostgreSQL) и оставите установленным флажок Создать базу данных в случае ее отсутствия, сервер 1С подключится к СУБД, не найдет там базы с новым именем с опечаткой и просто создаст новую, абсолютно пустую базу ("чистую платформу без конфы"). Чтобы вернуть старую базу, проверьте точное написание её имени в pgAdmin, верните его в консоль 1С и снимите галочку автоматического создания.
Если пароль сменили не вы, а злоумышленники, и доступ через pgAdmin невозможен, нам понадобится механизм восстановления доступа на уровне конфигурационных файлов кластера СУБД. Выполним следующие действия.
data, путь к которой можно посмотреть в службах Windows или логах PGDATA\pg_log\).pg_hba.conf.host all all 127.0.0.1/32 md5 или scram-sha-256.trust. Это скажет серверу доверять всем локальным подключениям без запроса пароля.services.msc в Windows или systemctl restart postgresql в Linux).psql -U postgres (или зайдите в pgAdmin). Сервер пустит вас без пароля.
ALTER USER postgres WITH PASSWORD 'Ваш_Новый_Надежный_Пароль';
После того как команда успешно выполнится, ОБЯЗАТЕЛЬНО вернитесь в файл pg_hba.conf. Замените trust обратно на md5 или scram-sha-256 (в зависимости от ваших исходных настроек). Снова перезапустите службу СУБД. Теперь ваша база снова защищена.
С точки зрения безопасности использовать учетную запись суперпользователя postgres для подключения информационных баз 1С — это плохая практика. Посмотрим на альтернативный и более безопасный вариант.
Если у вас есть доступ к СУБД, мы рекомендуем создать нового пользователя БД специально для конкретной базы 1С:
postgres.Такой подход защитит кластер баз данных от полной компрометации в случае перехвата учетных данных конкретной базы 1С.