Назад | Перейти на главную страницу

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.

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

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

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

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

Документ в https://wiki.archlinux.org/index.php/PostgreSQL сообщает:

В заключение, Начало и включить postgresql.service.

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

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