В 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 вручную, то есть без использования упакованного скрипта запуска, вам необходимо сделать то, что делает скрипт:
создайте
/run/postgresql
каталог с правами записи для другихpostgres
и правами чтения для других./run
Обычно монтируется на RAM-диске, поэтому нормально, если он пуст.запускать исключительно
pg_ctl
как пользовательpostgres
. Используйтеsudo -u postgres
ifsudo
для этого.
Первая ошибка, которую вы упомянули, решается с помощью пункта 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”
это то, что привело меня сюда. Я попробовал то, чему научился здесь и в других местах, но все безрезультатно, затем прибегнул к старой доброй перезагрузке. И все получилось. Ну что ж. Не могу сказать, что я многому научился или что это многому научило, кроме того, что не забудьте попробовать перезагрузиться...