Как исправить ошибку «Unauthorized» и сбои запуска из-за кириллицы в pgAdmin 4 при работе с PostgreSQL?

Системный администратор IT и автоматизация бизнеса
← На главную

Администрирование баз данных PostgreSQL — неотъемлемая часть работы системных администраторов и программистов, сопровождающих информационные базы на платформе 1С:Предприятие. Одним из наиболее популярных инструментов для управления этой СУБД является pgAdmin 4. Однако в процессе его эксплуатации пользователи часто сталкиваются с неприятными техническими сбоями. К наиболее распространенным из них относятся внезапное появление ошибки «Unauthorized» (HTTP 401) при открытии веб-интерфейса и аварийное завершение работы службы инициализации («Fatal error: Failed to launch the application server»), вызванное присутствием кириллических символов в путях операционной системы.

В этой статье мы подробно проанализируем природу возникновения этих ошибок, разберем по шагам проверенные методы их устранения, а также рассмотрим современные альтернативные инструменты, способные повысить стабильность и скорость работы администратора баз данных.

Часть 1. Устранение ошибки «Unauthorized» (HTTP 401) при запуске pgAdmin 4

Данная неполадка проявляется внезапно: приложение, которое еще вчера работало стабильно, при очередном запуске выдает сообщение о невозможности верификации учетных данных. Причина кроется в архитектуре pgAdmin 4. В современных версиях этот инструмент представляет собой веб-приложение, работающее на базе локального сервера Python (обычно Flask). При каждом запуске сервер генерирует уникальный одноразовый токен безопасности (ключ авторизации), который передается в браузер в виде параметра в адресной строке (например, ?key=...). Если этот токен теряется, блокируется или некорректно обрабатывается браузером, пользователь получает ошибку авторизации.

Рассмотрим подробнее четыре основных способа решения этой проблемы.

Способ 1. Жесткое указание исполняемого файла браузера в настройках

Наиболее частой причиной сбоя передачи токена является некорректное взаимодействие службы pgAdmin с браузером, установленным по умолчанию в операционной системе. Чтобы решить эту проблему, зафиксируем команду вызова браузера вручную:

  1. Найдите иконку pgAdmin в системном трее Windows (рядом с часами) и нажмите на нее правой кнопкой мыши.
  2. В контекстном меню выберите пункт «Configure» (Настройки).
  3. В открывшемся окне конфигурации найдите параметр «Browser Command» (Команда браузера).
  4. Пропишите полный путь к исполняемому файлу вашего основного браузера, добавив в конце переменную передачи URL. Например, для Mozilla Firefox строка будет выглядеть так: "C:\Program Files\Mozilla Firefox\firefox.exe" %URL%. Для Google Chrome путь может быть следующим: "C:\Program Files\Google\Chrome\Application\chrome.exe" %URL%.
  5. Сохраните изменения, нажав кнопку «Save», и перезапустите pgAdmin.

Способ 2. Ручное копирование адреса сервера с токеном

Если автоматический запуск все равно завершается ошибкой, мы можем обойти механизм вызова внешнего приложения:

  1. Нажмите правой кнопкой мыши по иконке pgAdmin в трее.
  2. Выберите пункт «Copy server URL». Веб-адрес вместе со сгенерированным ключом безопасности будет скопирован в буфер обмена.
  3. Откройте любой установленный в системе браузер (например, Яндекс.Браузер, Chrome или Edge) и вставьте скопированную ссылку в адресную строку. Принудительная передача токена напрямую позволит успешно пройти авторизацию.

Способ 3. Отключение усиленной безопасности в Windows Server

Если СУБД PostgreSQL и pgAdmin развернуты на серверной операционной системе (например, Windows Server 2016/2019/2022), авторизационные заголовки могут блокироваться встроенными механизмами защиты:

  1. Откройте Диспетчер серверов (Server Manager).
  2. Перейдите в раздел «Локальный сервер» (Local Server).
  3. Найдите пункт «Конфигурация усиленной безопасности Internet Explorer» (IE Enhanced Security Configuration).
  4. Отключите этот параметр для групп администраторов и пользователей (переведите переключатели в положение «Выкл»).
  5. Перезапустите фоновую службу pgAdmin через системный трей.

Способ 4. Сброс зависших сессий и кэша

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

  1. Полностью закройте pgAdmin через контекстное меню в трее (кнопка «Shutdown server»).
  2. Перейдите по пути: %APPDATA%\Roaming\pgAdmin (или pgadmin4).
  3. Найдите папку с именем sessions и полностью удалите ее. При следующем запуске pgAdmin создаст чистые файлы сессий.

Часть 2. Решение проблемы с кириллицей в путях профиля Windows

С выходом обновлений pgAdmin пользователи начали сталкиваться со следующей ошибкой инициализации приложения:

Fatal error: An error occurred initialising the application server: Failed to launch the application server server thread exiting

Выясним причину этой проблемы. Компоненты pgAdmin, написанные на Python, при инициализации обращаются к каталогу %APPDATA% для создания служебной базы данных настроек pgadmin4.db. Если имя учетной записи Windows написано на русском языке (например, C:\Users\Иван\AppData...), старые обработчики путей Python не могут корректно прочитать некодированные символы Юникода, что приводит к критической ошибке запуска.

Вместо сложного и потенциально опасного для операционной системы переименования папки пользователя, мы применим изящное решение — перенаправим рабочие каталоги pgAdmin в место, не содержащее кириллических символов. Разберем этот процесс по шагам:

  1. Создайте в корне системного диска C: новую папку с англоязычным названием, например: C:\pgadmin_data.
  2. Перейдите в каталог установки pgAdmin 4. Обычно он находится по пути: C:\Program Files\PostgreSQL\<Версия>\pgAdmin 4\web\ или в C:\Program Files\pgAdmin 4\web\.
  3. Найдите в этой папке конфигурационный файл с именем config.py. Важно: не редактируйте этот файл напрямую, так как при обновлении программы все изменения будут стерты.
  4. Создайте в этой же папке (..\web\) новый текстовый файл и переименуйте его в config_local.py. Это файл локальных переопределений, который считывается интерпретатором в приоритетном порядке.
  5. Откройте созданный файл config_local.py в текстовом редакторе (например, Notepad++) и вставьте в него следующий код, переопределяющий пути к базам данных, логам и сессиям:

import os

# Перенаправляем все рабочие каталоги pgAdmin в созданную папку без кириллицы
DATA_DIR = 'C:/pgadmin_data'
LOG_FILE = os.path.join(DATA_DIR, 'pgadmin4.log')
SQLITE_PATH = os.path.join(DATA_DIR, 'pgadmin4.db')
SESSION_DB_PATH = os.path.join(DATA_DIR, 'sessions')
STORAGE_DIR = os.path.join(DATA_DIR, 'storage')
  1. Сохраните файл config_local.py. Обратите внимание, что для сохранения изменений в папке Program Files вам могут потребоваться права администратора.
  2. Запустите pgAdmin 4. Программа автоматически инициализирует базу настроек по новому пути C:\pgadmin_data и запустится без ошибок.

Дополнительный нюанс: кириллица в имени компьютера. Похожая проблема может возникнуть, если имя самого компьютера в сети содержит русские буквы (например, ПК-КОНСУЛЬТАНТ). В этом случае сетевые библиотеки Python также выдают ошибку сопряжения сокетов. Единственным надежным решением в данной ситуации является переименование компьютера в свойствах системы с использованием исключительно латинских символов и цифр (например, SRV-DB-01) с последующей перезагрузкой ПК.

Часть 3. Особенности использования pgAdmin из дистрибутивов СУБД для 1С

На профильных форумах часто упоминается, что версии pgAdmin, поставляемые в одном пакете с оптимизированными дистрибутивами PostgreSQL для 1С (в том числе от отечественных сборщиков и Postgres Pro), ведут себя крайне нестабильно. Это обусловлено тем, что сборщики включают в пакет СУБД фиксированную версию утилиты администрирования, которая со временем устаревает, теряет совместимость с обновлениями браузеров или содержит неисправленные уязвимости.

Официальная рекомендация разработчиков и опытных системных администраторов состоит в следующем:

Часть 4. Современные альтернативы pgAdmin для администрирования баз данных

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

  1. DBeaver — мощный кроссплатформенный менеджер баз данных с открытым исходным кодом. Он написан на Java, работает значительно быстрее веб-интерфейса pgAdmin и обладает огромным функционалом для построения сложных запросов, выгрузки данных и анализа планов выполнения запросов (Explain Plan). DBeaver отлично справляется со специфической структурой таблиц 1С.
  2. HeidiSQL — невероятно быстрый и легковесный клиент для Windows. Первоначально разрабатывавшийся под СУБД MySQL, сегодня он обеспечивает стабильную работу с PostgreSQL. HeidiSQL мгновенно запускается, практически не расходует оперативную память и имеет интуитивно понятный графический интерфейс.
  3. DataGrip — профессиональная среда разработки баз данных от компании JetBrains. Этот инструмент незаменим для разработчиков СУБД. DataGrip предлагает лучшее на рынке автодополнение кода SQL, глубокий статический анализ запросов, удобную систему контроля версий и продвинутую навигацию по зависимостям таблиц.
  4. pgcli — специализированный консольный клиент для PostgreSQL. В отличие от стандартной утилиты psql, он предлагает умное автозаполнение команд по мере ввода (интеллектуальный контекстный поиск), подсветку синтаксиса SQL и удобное форматирование табличного вывода непосредственно в окне терминала. Отличный выбор для администраторов, предпочитающих работу через SSH.
← На главную