Я установил 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. Надеюсь, это поможет кому-то еще!