Ошибка PostgreSQL: password authentication failed в 1С (pg_hba.conf)
Почему 1С не может авторизоваться в PostgreSQL?
При создании новой информационной базы через консоль 1С или при запуске сервера приложений появляется критическая ошибка подключения к СУБД:
Ошибка создания информационной базы:
FATAL: password authentication failed for user "postgres"
ВАЖНО: пользователь "postgres" не прошёл аутентификацию по паролю (по протоколу TCP/IP).Основные причины ошибки:
- Неправильно введен пароль пользователя
postgresилиusr1cv8. - Конфигурационный файл контроля доступа
pg_hba.confотклоняет входящие сетевые подключения. - Несовпадение алгоритмов шифрования паролей: платформа 1С ожидает метод
md5, а современный PostgreSQL настроен наscram-sha-256.
Пошаговое исправление прав доступа в файле pg_hba.conf
Шаг 1. Открываем файл pg_hba.conf в Linux
Файл правил аутентификации находится в каталоге конфигурации PostgreSQL:
sudo nano /etc/postgresql/XX/main/pg_hba.conf
# (где XX — номер вашей версии, например 14, 15 или 16)Шаг 2. Настраиваем правила подключения
Прокрутите файл в самый низ и найдите строки с типами подключений local и host. Приведите их к следующему виду:
# ТИП БАЗА ПОЛЬЗОВАТЕЛЬ АДРЕС МЕТОД
# Локальные подключения через Unix-сокет:
local all all trust
# Подключения по IPv4 с локального хоста (127.0.0.1):
host all all 127.0.0.1/32 md5
# Подключения со всей локальной сети офиса/серверов 1С:
host all all 192.168.1.0/24 md5
# Подключения по IPv6:
host all all ::1/128 md5Важное примечание: Если вы используете новую версию PostgreSQL 14/15/16, метод шифрования md5 обеспечивает максимальную совместимость с сервером 1С:Предприятия.
Шаг 3. Установка нового пароля для пользователя postgres в СУБД
Чтобы исключить неверный ввод пароля, принудительно задайте его заново через терминал:
sudo -u postgres psql
# В консоли PostgreSQL выполните SQL-запрос:
ALTER USER postgres WITH PASSWORD 'ВашНовыйПароль123';
\qШаг 4. Перезапуск PostgreSQL
Примените обновленную конфигурацию правил безопасности:
sudo systemctl restart postgresql Частые вопросы (FAQ)
Что означает метод trust в pg_hba.conf?
Метод trust разрешает вход без проверки пароля. Его можно использовать только для локальных сокетов (local), но категорически нельзя открывать для внешних хостов (host all all 0.0.0.0/0 trust).
Почему после смены пароля в Linux пароль СУБД не меняется?
Пользователь операционной системы Linux (системный аккаунт postgres) и внутренний пользователь базы данных PostgreSQL (роль postgres) — это две абсолютно разные учетные записи с независимыми паролями.
Что делать, если PostgreSQL слушает только localhost?
Откройте файл postgresql.conf и убедитесь, что параметр listen_addresses раскомментирован и имеет значение: listen_addresses = '*' (слушать все сетевые интерфейсы).
Как проверить подключение к PostgreSQL вручную из консоли?
Выполните команду: psql -h 127.0.0.1 -U postgres -d postgres. Если система запросит пароль и откроет интерфейс ввода SQL — база готова к работе с 1С.