pg_ctl: не удалось открыть PID-файл "/var/lib/postgres/data/postmaster.pid": Отказано в доступе

pg_ctl: не удалось открыть PID-файл "/var/lib/postgres/data/postmaster.pid": Отказано в доступе

В Arch Linux после запуска команды initdb я получаю следующее сообщение:

Success. You can now start the database using:
    pg_ctl -D /var/lib/postgres/data -l logfile start

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

FATAL: could not create lock file "/run/postgresql/.s.PGSQL.5432.lock" no such file or directory

Я выхожу в систему пользователя postgres и пытаюсь запустить команду, указанную выше, и получаю:

pg_ctl: could not open PID file "/var/lib/postgres/data/postmaster.pid" : Permission denied

Затем я пробую выполнить указанную выше команду как sudo:

sudo pg_ctl -D /var/lib/postgres/data -l logfile start

и получить:

pg_ctl: cannot run as root.

решение1

При запуске postgres вручную, то есть без использования упакованного скрипта запуска, вам необходимо сделать то, что делает скрипт:

  1. создайте /run/postgresqlкаталог с правами записи для других postgres и правами чтения для других. /runОбычно монтируется на RAM-диске, поэтому нормально, если он пуст.

  2. запускать исключительно pg_ctlкак пользователь postgres. Используйте sudo -u postgresif sudoдля этого.

Первая ошибка, которую вы упомянули, решается с помощью пункта 1, а две другие — с помощью пункта 2. Или просто используйте скрипт запуска, который идет в комплекте с пакетом для вашей ОС, он позаботится об этих деталях, так что вам не придется их изучать.

Док вhttps://wiki.archlinux.org/index.php/PostgreSQLговорит:

Окончательно,начинатьидавать возможностьpostgresql.service.

что означало бы systemctl enable postgresql.serviceи systemctl start postgresql.service,в отличие отк pg_ctl [...options...] start.

решение2

Если это имеет значение, я хочу добавить, что у меня только что была очень похожая проблема с Postgresql 10 на Ubuntu. Фактически, could not open PID file “/var/lib/postgres/data/postmaster.pid”это то, что привело меня сюда. Я попробовал то, чему научился здесь и в других местах, но все безрезультатно, затем прибегнул к старой доброй перезагрузке. И все получилось. Ну что ж. Не могу сказать, что я многому научился или что это многому научило, кроме того, что не забудьте попробовать перезагрузиться...

Связанный контент