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

Служба PostgreSQL initdb не работает

Я установил PostgreSQL 9.1.2 на свою Fedora 16 способом, аналогичным упомянутому Вот, и протестировал его, а это значит, что моя установка работает нормально.

Но когда я сделаю: service postgresql initdb или даже service postgresql-9.0 initdb Я получаю сообщение об ошибке:

Redirecting to /bin/systemctl  initdb postgresql.service
Unknown operation initdb

И из-за этого я тоже не могу запустить pgAdmin3.

Что мне не хватает?

В системах, где postgres был преобразован для использования собственного systemd блок, который вам нужно использовать postgresql-setup для таких вещей, как initdb. Итак, что вы хотите:

postgresql-setup initdb

Запустите команду "su - postgres -c ..." как корень

Я нашел здесь ответ: https://bugzilla.redhat.com/show_bug.cgi?id=771496

Описание проблемы: после начальной установки сервера postgresql rpm у вас остается не запускаемая служба, пока вы не запустите следующую команду от имени пользователя root

su - postgres -c "initdb -D / var / lib / pgsql / data"

Версия-Номер выпуска выбранного компонента (если применимо):

[корень @ oscar] # rpm -q postgresql-server postgresql-server-9.1.2-1.fc16.x86_64

Насколько воспроизводимо: всегда

Предыстория

В нескольких местах мне было предложено использовать эту команду для Fedora 16 вместо того, чтобы следовать предыдущим инструкциям (новая команда: su - postgres -c "PGDATA = / var / lib / pgsql / data initdb"), но увидев 'su' в Я предполагал, что это переключит меня на root, когда я запустил команду. Он продолжал запрашивать пароль, но ничего не работало.

Я попробовал root passwd, мой собственный (как будто sudo'ing), «postgres» и «pgsql» на случай, если я каким-то образом должен был делать это как пользователь postgres, даже оставив пароль пустым. Я попробовал su'ing для получения root-прав, а затем выполнил команду без начального 'su -' (начиная с "postgres -c ..."), но это тоже было ошибкой, сказав мне, что:

«Сервер должен быть запущен от имени непривилегированного пользователя, чтобы предотвратить возможную угрозу безопасности системы. Дополнительную информацию о том, как правильно запустить сервер, см. В документации».

Наконец, я попробовал запустить полную команду «su - postgres -c ...» от имени пользователя root, но все еще использовал «su», и ничего себе - это сработало. Теперь служба запускается. Спасибо, отслеживание ошибок Redhat!

Резюме

su в root, затем введите:

su - postgres -c "PGDATA = / var / lib / pgsql / data initdb"

Вам нужно запустить службу postgresql с помощью команды:

service postgresql start

В initdb инструмент следует использовать только тогда, когда вам нужно инициализировать каталог данных сервера базы данных, и это должно было быть сделано автоматически, когда вы устанавливаете свой сервер postgresql с помощью диспетчера пакетов, например yum на centos или apt-get на убунту.

Вы можете использовать его, как указано в предоставленной вами ссылке:

initdb -D /usr/local/pgsql/data

Это ответ немного запоздал, но может быть полезным для кого-то там ... В Fedora 18 с postgresql 9.2 мне пришлось добавить /usr/pgsql-9.2/bin в мой PATH в моей оболочке, а оттуда Пришлось бежать:

postgresql92-setup initdb

чтобы получить файлы конфигурации и все такое в /var/lib/pgsql/9.2/data. Надеюсь, это поможет кому-то еще!