"корневое" выполнение сервера PostgreSQL не допускается


Когда я пытаюсь запустить postgresql, я получаю ошибку:

postgres

Postgres не знает, где найти файл конфигурации сервера.
Вы должны указать опцию вызова --config-file или-D или установить Переменная окружения PGDATA.

Итак, я пытаюсь установить мой конфигурационный файл:

postgres -D /usr/local/var/postgres

И я получаю следующую ошибку:

Postgres не может получить доступ к файлу конфигурации сервера " / usr / local/var/postgres / postgresql.conf": разрешение отказано

Хм, ладно. Далее я пытаюсь выполнить то же самое действие, что и администратор:

 sudo postgres -D /usr/local/var/postgres

И я получаю следующую ошибку:

"корневое" выполнение сервера PostgreSQL не допускается.
Сервер должен быть запущен под непривилегированным идентификатором пользователя, чтобы предотвратить возможно нарушение безопасности системы. Смотрите документацию для получения дополнительной информации информация о том, как правильно запустить сервер.

Я поискал в Гугле это сообщение об ошибке, но не смог найти решение.
Может ли кто-нибудь дать некоторое представление об этом?

2 12

2 ответа:

Ваша команда не делает то, что вы думаете он делает. Чтобы запустить что-то как системный пользователь postgres:

 sudo -u postgres command

Для выполнения команды (также называемой postgres!):

sudo -u postgres postgres -D /usr/local/var/postgres

Ваша команда делает обратное:

sudo postgres -D /usr/local/var/postgres

Он запускает программу postgres как суперпользователь.root (sudo без -u коммутатора), а Postgres не позволяет запускаться с привилегиями суперпользователя по соображениям безопасности. Отсюда и сообщение об ошибке.

Если вы собираетесь запустить пару команды как системный пользователь postgres, измените пользователя с помощью:

sudo -u postgres -i

... и exit когда вы закончите.

Если вы видите это сообщение об ошибке во время работы в качестве системного пользователя postgres, то что-то не так с разрешениями на файл или один из содержащих каталогов.

Postgres не может получить доступ к файлу конфигурации сервера " / usr / local/var/postgres / postgresql.конф": В разрешении отказано /usr/местные/ВАР/и Postgres/PostgreSQL версии.conf

В заключение:

Для тех, кто пытается выполнить пользовательскую команду с помощью официального образа docker, используйте следующую команду. docker-entrypoint.sh обрабатывает переключение пользователя и обработку других разрешений.

docker-entrypoint.sh -c 'shared_buffers=256MB' -c 'max_connections=200'