Как исправить ошибку создания базы 1С на PostgreSQL: решение проблемы с аутентификацией Peer и паролем пользователя postgres

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

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

Попытки изменить пароль администратора СУБД напрямую из терминала также часто заканчиваются неудачей и выводом системного сообщения: psql: ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (Peer). В рамках этой статьи мы подробно разберем, почему возникают эти ошибки, проанализируем механизмы авторизации PostgreSQL и пошагово настроим сервер для стабильного подключения платформы 1С.

Причина ошибки: Почему возникает конфликт аутентификации Peer

Для того чтобы успешно решить проблему, нам необходимо понять внутреннюю логику работы механизмов безопасности 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С не сможет подключиться к СУБД.

Шаг 1. Правильное изменение пароля пользователя postgres через терминал

Выяснив причину блокировки Peer, выполним корректную смену пароля администратора СУБД. Для этого нам необходимо запустить консоль psql от лица системного пользователя postgres. Разберем по шагам, как это сделать.

Откроем терминал Ubuntu и переключимся на суперпользователя СУБД одним из следующих способов:

  1. Использование утилиты sudo для мгновенного перехода: sudo -u postgres psql
  2. Или предварительный вход под системным пользователем postgres в ОС:
    
    su postgres
    psql
    

После успешного входа в консоль приглашение ввода изменится на postgres=#. Теперь мы можем безопасно и без ошибок изменить пароль пользователя СУБД. Выполним интерактивную команду СУБД:

\password postgres

Система предложит ввести новый пароль и подтвердить его. Обратите внимание, что вводимые символы не будут отображаться на экране в целях безопасности. Также пароль можно установить стандартным SQL-запросом (обязательно указывая точку с запятой в конце строки):

ALTER USER postgres PASSWORD 'ВашНадежныйПароль';

Для выхода из интерактивного режима psql введите команду \q.

Шаг 2. Настройка конфигурационного файла pg_hba.conf

Теперь настроим правила авторизации СУБД, чтобы разрешить платформе 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С полностью поддерживает этот стандарт шифрования.

Шаг 3. Настройка сетевых адресов в postgresql.conf

По умолчанию 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

Шаг 4. Проверка доступности портов

Убедимся, что служба 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 для 1С

При развертывании СУБД критически важно помнить, что стандартная («ванильная») версия PostgreSQL, устанавливаемая из дефолтных репозиториев Ubuntu, не подходит для корректной работы с платформой 1С:Предприятие. Специфика архитектуры метаданных 1С требует обязательного наличия специализированных патчей в СУБД.

Специализированные сборки (например, от самой компании 1С или дистрибутивы Postgres Pro 1C) содержат:

Использование неподготовленной версии СУБД неизбежно приведет к ошибкам совместимости на этапе реструктуризации таблиц или записи транзакций.

Тонкая настройка производительности СУБД под задачи 1С

После того как подключение успешно настроено и база создана, параметры по умолчанию в файле postgresql.conf не обеспечат должного быстродействия. СУБД «из коробки» настроена на минимальное потребление ресурсов. Изменим ключевые параметры производительности под доступный объем оперативной памяти (RAM) вашего сервера.

Рассмотрим рекомендации по настройке параметров для сервера, например, с 16 ГБ оперативной памяти:

  1. shared_buffers — объем оперативной памяти, используемый сервером базы данных для буферизации данных. Рекомендуется выделять около 25% от всей RAM сервера. Для 16 ГБ установим: shared_buffers = 4GB
  2. work_mem — объем памяти, используемый для выполнения внутренних операций сортировки и группировки данных перед записью во временные файлы на диске. Для тяжелых запросов 1С рекомендуется устанавливать: work_mem = 64MB
  3. maintenance_work_mem — память для выполнения административных задач СУБД (создание индексов, вакуумирование таблиц). Зададим лимит: maintenance_work_mem = 1GB
  4. effective_cache_size — это оценка доступной памяти для кэширования диска операционной системой. Помогает планировщику запросов оценивать стоимость планов. Рекомендуется выставлять на уровне 50-75% от всей RAM: effective_cache_size = 12GB
  5. row_security — данный параметр разграничения доступа на уровне строк обязательно должен быть отключен для баз данных 1С, иначе возникнут критические ошибки в запросах платформы: row_security = off

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

← На главную