В 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 вручную, то есть без использования упакованного сценария запуска, вам необходимо сделать то, что делает сценарий:
создать /run/postgresql
каталог с разрешением на запись для postgres
и разрешение на чтение для других. /run
обычно устанавливается на оперативный диск, поэтому это нормально, что он пуст.
бегать pg_ctl
как пользователь postgres
исключительно. Использовать sudo -u postgres
если sudo
должен быть использован для этого.
Первая ошибка, которую вы упомянули, решается с помощью №1, а две другие - с помощью №2. Или просто используйте сценарий запуска, который поставляется с пакетом для вашей ОС, он позаботится об этих деталях, чтобы вам не пришлось их изучать.
Документ в https://wiki.archlinux.org/index.php/PostgreSQL сообщает:
что означало бы 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”
вот что привело меня сюда. Я пробовал вещи, изученные здесь и в других местах, но все безрезультатно, затем прибегал к старой перезагрузке. И все прошло хорошо. Ну что ж. Не могу сказать, что многому научился, или что это многому учит, кроме того, что не забудьте попробовать перезагрузиться ...