Что делать, если 1С выдает ошибку «Сервер баз данных не обнаружен» при подключении к PostgreSQL на Linux

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

Разберем распространенную проблему, с которой сталкиваются системные администраторы при развертывании клиент-серверной архитектуры 1С: Предприятие 8.3: сервер приложений работает под управлением ОС Windows Server, а СУБД PostgreSQL размещена на отдельной машине под управлением Linux (например, Ubuntu). При попытке создать новую информационную базу через консоль администрирования или клиент 1С возникает ошибка «Сервер баз данных не обнаружен».

Проанализируем основные причины этой ошибки и рассмотрим пошаговый алгоритм её устранения.

Причина 1. Использование стандартной версии PostgreSQL вместо специализированной сборки 1С

Стандартный дистрибутив PostgreSQL из официальных репозиториев Linux не содержит специфических патчей, необходимых для работы сервера приложений 1С. Без них 1С не сможет корректно работать с длинными индексами, блокировками и объектами метаданных.

Для корректного взаимодействия следует использовать сборки PostgreSQL, подготовленные и протестированные компанией 1С или ее официальными партнерами (например, Postgres Professional). Скачать нужную сборку можно с официального сайта обновления программ 1С из раздела дополнительных компонентов.

Причина 2. Ограничение сетевых интерфейсов в postgresql.conf

По умолчанию PostgreSQL слушает только локальный интерфейс (localhost / 127.0.0.1), что блокирует любые внешние сетевые подключения от сервера 1С.

Для исправления этой настройки проанализируем и отредактируем основной конфигурационный файл PostgreSQL:

  1. Откроем файл конфигурации СУБД (например, по пути /etc/postgresql/9.6/main/postgresql.conf).
  2. Найдем параметр listen_addresses и зададим ему значение '*' или укажем конкретный IP-адрес сетевой карты Linux-сервера.

listen_addresses = '*'
port = 5432

После внесения изменений перезапустим службу СУБД командой:

sudo systemctl restart postgresql

Причина 3. Блокировка внешних подключений в pg_hba.conf

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

Рассмотрим, как настроить правила авторизации:

  1. Откроем файл pg_hba.conf (в Ubuntu обычно находится в /etc/postgresql/9.6/main/pg_hba.conf или в каталоге данных кластера).
  2. Добавим строку, разрешающую подключение с подсети или IP-адреса сервера 1С.

Пример настройки для доступа из локальной сети с аутентификацией по паролю (md5):


# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             192.168.1.0/24          md5

Если требуется временно проверить доступность и исключить ошибки проверки пароля, можно указать метод trust для администратора postgres или локальной сети, после чего обязательно перезапустить службу PostgreSQL.

Причина 4. Сетевые блокировки и брандмауэр (Firewall)

Наличие успешного ICMP-ответа (команда ping) подтверждает связность на сетевом уровне, но не гарантирует доступность служб по TCP-порту 5432. Брандмауэр на стороне Linux (UFW/iptables) или Windows Firewall может блокировать пакеты.

Выполним следующую диагностику:

  1. Проверим доступность порта 5432 с сервера 1С с помощью утилиты Telnet или PowerShell: Test-NetConnection -ComputerName 192.168.1.50 -Port 5432
  2. Если порт закрыт, разрешим входящие соединения на Linux-сервере в файрволе UFW: sudo ufw allow 5432/tcp
  3. Проверим с помощью стороннего клиента (например, pgAdmin), установленного на Windows-сервере 1С, удается ли подключиться к PostgreSQL под учетной записью postgres.

Причина 5. Несовместимость методов шифрования паролей и кодировки

В новых версиях PostgreSQL часто используется метод авторизации scram-sha-256. Старые релизы платформы 1С или клиенты libpq могут не поддерживать данный алгоритм и выдавать ошибку подключения. В этом случае в pg_hba.conf следует явно задавать метод md5.

Также обратим внимание на инициализацию кластера СУБД. Кластер PostgreSQL для 1С должен быть инициализирован с русской локалью и кодировкой UTF-8 (например, ru_RU.UTF-8), иначе 1С не сможет сформировать служебные таблицы базы данных.

Итоговый чек-лист для проверки:

  1. Установлена сборка PostgreSQL с патчами для 1С (с сайта 1С или Postgres Pro).
  2. В postgresql.conf параметр listen_addresses равен '*'.
  3. В pg_hba.conf прописана подсеть сервера 1С с методом md5 или trust.
  4. Порт 5432 открыт в межсетевом экране Linux (ufw).
  5. Учетная запись СУБД postgres обладает правами SUPERUSER.
← На главную