Забытый пароль от учетной записи администратора базы данных postgres — ситуация неприятная, но не критическая. Особенно часто с этим сталкиваются системные администраторы при поддержке серверов 1С, когда доступ к СУБД через pgAdmin становится невозможен, а приложение (сервер 1С) требует актуальных учетных данных для работы с базой. Рассмотрим подробнее, как восстановить доступ, не потеряв при этом данные, и разберем по шагам процесс смены пароля и его обновления в настройках 1С.
Прежде чем приступать к активным действиям, проанализируем ситуацию и выясним, какой именно пароль был утерян. В экосистеме PostgreSQL часто путают два разных типа защиты:
pgadmin4.db в профиле пользователя, однако это приведет к удалению всех сохраненных ранее подключений к серверам.В рамках данной статьи мы сосредоточимся на восстановлении пароля именно второго типа — пользователя postgres.
Перед тем как сбрасывать настройки, проверим, не сохранен ли пароль в системе в открытом виде. PostgreSQL может использовать специальные файлы для автоматической авторизации. Посмотрим на наиболее вероятные места хранения:
В операционной системе Windows проверьте путь: %APPDATA%\postgresql\pgpass.conf. Откройте этот файл обычным текстовым редактором. Если там есть записи, они будут выглядеть в формате хост:порт:база:пользователь:пароль.
В системах Linux аналогичный файл называется .pgpass и обычно находится в домашней директории пользователя, под которым запускается служба (например, /var/lib/postgresql/.pgpass или ~/.pgpass).
Если файл пуст или отсутствует, переходим к процедуре сброса через режим доверия.
Для того чтобы зайти в базу без пароля, нам нужно временно изменить политику безопасности сервера. Основным файлом, отвечающим за это, является pg_hba.conf. Выясним его расположение:
C:\Program Files\PostgreSQL\10\data\pg_hba.conf./etc/postgresql/10/main/pg_hba.conf или в папке с данными /var/lib/pgsql/10/data/.Откроем файл любым текстовым редактором с правами администратора и найдем строки, описывающие локальные подключения (обычно в самом низу файла). Нам нужно найти строки, где указан метод 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). Это дает нам возможность войти и сменить забытый пароль.
После сохранения изменений в файле pg_hba.conf, настройки не вступят в силу немедленно. Нам необходимо перезапустить службу СУБД:
В Windows откроем оснастку «Службы» (команда services.msc), найдем в списке PostgreSQL 10, нажмем правую кнопку мыши и выберем «Перезапустить».
В Linux выполним команду в терминале:
sudo systemctl restart postgresql
Теперь, когда сервер разрешает вход без пароля, запустим pgAdmin или воспользуемся консольной утилитой psql. В pgAdmin просто подключитесь к серверу (пароль запрашиваться не должен). Откройте Query Tool и выполните следующий SQL-запрос:
ALTER USER postgres WITH PASSWORD 'Ваш_Новый_Сложный_Пароль';
Проанализируем синтаксис: мы используем команду ALTER USER, указываем имя пользователя postgres и задаем новый пароль, заключенный в одинарные кавычки. Точка с запятой в конце обязательна.
Критически важно: не оставляйте сервер в режиме trust! После успешной смены пароля вернитесь в файл pg_hba.conf и замените trust обратно на тот метод, который был до этого (обычно md5). После этого снова перезапустите службу PostgreSQL, как мы делали в Шаге 3.
Многие пользователи задаются вопросом: будет ли приложение (1С:Предприятие) работать после смены пароля в СУБД? Ответ — нет. Так как пароль в самой базе изменился, сервер 1С не сможет авторизоваться и выдаст ошибку подключения. Разберем, как исправить ситуацию:
После этого связь между сервером 1С и PostgreSQL будет восстановлена, и пользователи смогут продолжить работу. Если база данных не одна, эту процедуру нужно повторить для каждой базы, использующей учетную запись postgres.
Чтобы в будущем не прибегать к экстренным мерам, рекомендуется придерживаться следующих правил:
postgres везде.pg_hba.conf и postgresql.conf.Таким образом, мы пошагово разобрали процесс восстановления доступа к PostgreSQL 10 и обеспечили корректную работу всей связки программного обеспечения 1С. Помните, что безопасность СУБД — приоритетная задача, поэтому режим trust должен использоваться только в исключительных случаях на минимально необходимое время.