Развертывание связки 1С:Предприятие + PostgreSQL на операционной системе Linux (в частности, Ubuntu) — это стандартная задача для системного администратора. Однако на этапе первоначальной настройки СУБД и создания первой информационной базы часто возникает критическая ошибка. В процессе создания базы данных через консоль администрирования 1С или клиентское приложение система выдает сообщение: «Ошибка при создании информационной базы... Сервер баз данных не обнаружен: пользователь postgres не прошел проверку подлинности по паролю». Для исключения ошибок ручной конфигурации можно использовать сценарий для автоматизированной установки и настройки СУБД PostgreSQL и 1С.
Попытки изменить пароль администратора СУБД напрямую из терминала также часто заканчиваются неудачей и выводом системного сообщения: psql: ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (Peer). В рамках этой статьи мы подробно разберем, почему возникают эти ошибки, проанализируем механизмы авторизации PostgreSQL и пошагово настроим сервер для стабильного подключения платформы 1С.
Для того чтобы успешно решить проблему, нам необходимо понять внутреннюю логику работы механизмов безопасности PostgreSQL. Ошибка Peer в терминале и ошибка авторизации в 1С — это две стороны одной медали.
Рассмотрим подробнее метод авторизации Peer. Этот метод используется по умолчанию для локальных подключений через UNIX-сокет. Его суть заключается в том, что PostgreSQL запрашивает имя пользователя у операционной системы Linux и разрешает вход в СУБД только в том случае, если имя текущего пользователя ОС совпадает с именем пользователя базы данных. Если вы авторизованы в Ubuntu под своей обычной учетной записью (например, usr) и пытаетесь выполнить команду psql -U postgres, СУБД видит несовпадение («usr» в ОС и «postgres» в базе данных) и блокирует подключение по правилу Peer.
С другой стороны, платформа 1С:Предприятие подключается к СУБД по сетевому протоколу TCP/IP (даже если сервер 1С и PostgreSQL установлены на одной машине). Для сетевых подключений (тип соединений host) метод Peer технически неприменим. Здесь требуется парольная проверка, например, устаревающий md5 или современный scram-sha-256. Если для пользователя postgres в самой базе данных не задан пароль или в конфигурационном файле pg_hba.conf неверно настроены методы проверки подлинности, 1С не сможет подключиться к СУБД.
Выяснив причину блокировки Peer, выполним корректную смену пароля администратора СУБД. Для этого нам необходимо запустить консоль psql от лица системного пользователя postgres. Разберем по шагам, как это сделать.
Откроем терминал Ubuntu и переключимся на суперпользователя СУБД одним из следующих способов:
sudo для мгновенного перехода:
sudo -u postgres psql
postgres в ОС:
su postgres
psql
После успешного входа в консоль приглашение ввода изменится на postgres=#. Теперь мы можем безопасно и без ошибок изменить пароль пользователя СУБД. Выполним интерактивную команду СУБД:
\password postgres
Система предложит ввести новый пароль и подтвердить его. Обратите внимание, что вводимые символы не будут отображаться на экране в целях безопасности. Также пароль можно установить стандартным SQL-запросом (обязательно указывая точку с запятой в конце строки):
ALTER USER postgres PASSWORD 'ВашНадежныйПароль';
Для выхода из интерактивного режима psql введите команду \q.
Теперь настроим правила авторизации СУБД, чтобы разрешить платформе 1С подключаться по сети с использованием только что созданного пароля. Все настройки доступов хранятся в файле pg_hba.conf.
Сначала определим, где именно на вашем сервере находится актуальный конфигурационный файл. При использовании специализированной сборки Postgres Pro для 1С пути могут отличаться от стандартных. Найти процессы СУБД и пути к файлам данных можно командой:
ps -aux | grep postgres
В выводе команды найдем параметр запуска -D, указывающий на рабочую директорию СУБД (например, /var/lib/pgpro/std-10/data или /var/lib/pgpro/1c-18/data). Перейдем в эту директорию и откроем файл pg_hba.conf для редактирования с помощью текстового редактора nano:
sudo nano /var/lib/pgpro/1c-18/data/pg_hba.conf
Проанализируем структуру и отредактируем файл. Нам необходимо настроить локальные и сетевые подключения так, чтобы СУБД корректно принимала авторизационные данные от сервера 1С. Приведем секцию настроек авторизации к следующему виду:
# TYPE DATABASE USER ADDRESS METHOD
# Локальные подключения через сокет (администрирование из терминала)
local all postgres peer
local all all peer
# Локальные сетевые подключения IPv4 (для сервера 1С на том же хосте)
host all all 127.0.0.1/32 md5
# Внешние сетевые подключения IPv4 (для сервера 1С на другом хосте)
host all all 0.0.0.0/0 md5
# Локальные сетевые подключения IPv6
host all all ::1/128 md5
Важное примечание: Если вы используете современную версию PostgreSQL (13 и выше), настоятельно рекомендуется заменить устаревший метод шифрования md5 на более безопасный и современный метод scram-sha-256. Платформа 1С полностью поддерживает этот стандарт шифрования.
По умолчанию PostgreSQL настроен на прослушивание только локального сетевого интерфейса (localhost). Если сервер приложений 1С:Предприятия расположен на другой физической или виртуальной машине, он не сможет достучаться до СУБД, даже если авторизация настроена верно.
Откроем конфигурационный файл СУБД postgresql.conf, находящийся в той же рабочей директории:
sudo nano /var/lib/pgpro/1c-18/data/postgresql.conf
Найдем параметр listen_addresses. По умолчанию он закомментирован или имеет значение localhost. Изменим его значение так, чтобы СУБД принимала подключения на всех сетевых интерфейсах:
listen_addresses = '*'
После внесения изменений сохраним файл (в редакторе nano это делается сочетанием клавиш Ctrl + O, затем Enter) и закроем его (Ctrl + X).
Применим все сделанные изменения, перезапустив службу PostgreSQL в операционной системе Ubuntu:
sudo systemctl restart postgresql
Или, если вы используете сборку Postgres Pro:
sudo systemctl restart postgres-pro-1c-18
Убедимся, что служба PostgreSQL успешно запустилась после перезагрузки конфигурационных файлов и действительно слушает правильный сетевой порт (по умолчанию 5432). Для этого выполним сетевую диагностику в консоли сервера:
sudo netstat -auntpl | grep 5432
Проанализируем полученный результат. В выводе мы должны увидеть строки следующего вида:
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 1414/postgres
tcp6 0 0 :::5432 :::* LISTEN 1414/postgres
Значение 0.0.0.0:5432 указывает на то, что СУБД успешно ожидает входящие сетевые подключения на всех доступных IP-адресах сервера. Если же вы видите строку 127.0.0.1:5432, это означает, что сетевой доступ извне закрыт, и подключиться к СУБД сможет только локально установленный сервер 1С.
Также проверим состояние встроенного брандмауэра Ubuntu. Если он активен, порт СУБД может быть заблокирован:
sudo ufw status
Если брандмауэр активен, разрешим входящие подключения к нашей СУБД следующей командой:
sudo ufw allow 5432/tcp
При развертывании СУБД критически важно помнить, что стандартная («ванильная») версия PostgreSQL, устанавливаемая из дефолтных репозиториев Ubuntu, не подходит для корректной работы с платформой 1С:Предприятие. Специфика архитектуры метаданных 1С требует обязательного наличия специализированных патчей в СУБД.
Специализированные сборки (например, от самой компании 1С или дистрибутивы Postgres Pro 1C) содержат:
Использование неподготовленной версии СУБД неизбежно приведет к ошибкам совместимости на этапе реструктуризации таблиц или записи транзакций.
После того как подключение успешно настроено и база создана, параметры по умолчанию в файле postgresql.conf не обеспечат должного быстродействия. СУБД «из коробки» настроена на минимальное потребление ресурсов. Изменим ключевые параметры производительности под доступный объем оперативной памяти (RAM) вашего сервера.
Рассмотрим рекомендации по настройке параметров для сервера, например, с 16 ГБ оперативной памяти:
shared_buffers = 4GB
work_mem = 64MB
maintenance_work_mem = 1GB
effective_cache_size = 12GB
row_security = off
После изменения параметров оптимизации сохраните конфигурационный файл и выполните перезапуск службы PostgreSQL. Теперь ваша информационная база 1С готова к стабильной, безопасной и высокопроизводительной работе. Для комплексного аудита параметров СУБД под требования платформы можно использовать инструмент для чек-апа и проверки настроек СУБД под 1С.