Задать вопрос

Почему не запускается PostgreSQL в open server?

Установил open server 6.2.9
При установке выбрал php, postgreSQL.
Php работает, а вот при запуске субд выдает ошибку:
Запускать PostgreSQL под именем пользователя с правами
администратора не разрешается.
Для предотвращения возможной компрометации системы сервер
должен запускать обычный пользователь. Подробнее о том, как
правильно запускать сервер, вы можете узнать в документации.

Но если запускать не от имени админа, все равно не запускается, но при этом нет никаких логов
  • Вопрос задан
  • 429 просмотров
Подписаться 4 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • ProductStar × РБК
    Профессия DevOps-инженер + ИИ
    5 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@faruniverse
Ядро PostgreSQL по соображениям безопасности блокирует запуск под учетной записью Администратора Windows. Так как Open Server Panel 6.x (OSP6) запускает модули от имени текущего процесса, старт панели «От имени администратора» полностью ломает работу этой СУБД.
Разработчики OSP6 спроектировали шестую версию так, чтобы она работала без постоянных прав суперпользователя.

Способ 1.
Отключите принудительный запуск от админа: Нажмите правой кнопкой мыши по ярлыку или файлу Open Server.exe, выберите Свойства → вкладка Совместимость и снимите галочку с пункта «Запускать эту программу от имени администратора».
Настройте права на файл hosts: Чтобы Open Server мог управлять локальными доменами без прав админа, перейдите в папку C:\Windows\System32\drivers\etc\, нажмите правой кнопкой на файл hosts → Свойства → вкладка Безопасность. Нажмите Изменить и предоставьте группе «Пользователи» (или вашему текущему юзеру) Полный доступ.
Проверьте UAC: Контроль учетных записей (UAC) в Windows должен быть включен (хотя бы на минимальном уровне), иначе PostgreSQL продолжит считать вашу учетную запись абсолютным администратором.

Способ 2.
Запуск PostgreSQL через утилиту PsExec (Если панель обязана быть админом).
Если вам необходимо держать Open Server запущенным от Администратора, можно принудительно понижать права только для исполняемого файла PostgreSQL при помощи утилиты PsExec от Microsoft.

Скачайте утилиту PsExec с официального сайта Microsoft (в составе пакета Sysinternals Suite).
Распакуйте файл psexec64.exe в удобную папку, например в корень диска C:\Windows\.
Откройте конфигурационный файл модуля PostgreSQL в вашей панели Open Server. Путь к конфигурации:
{папка_OSP6}\config\PostgreSQL-XX\default\module.ini (где XX — ваша версия СУБД).
Найдите строку, отвечающую за команду запуска сервера (параметр start_cmd), и добавьте вызов psexec64.exe перед исполняемым файлом базы данных с флагом -l (ограниченные права):

# Пример изменения строки запуска в файле module.ini
start_cmd = "psexec64.exe" -accepteula -l -d "{root_dir}\bin\postgres.exe" [остальные параметры запуска панели...]
Флаг -l заставляет операционную систему отрезать маркер администратора от создаваемого процесса, и СУБД успешно стартует.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы