上記の here と同様の方法で、Fedora 16にPostgreSQL 9.1.2をインストールしてテストしました。つまり、私のインストールは正常に機能しています。
しかし、私がするとき:service postgresql initdb
あるいは service postgresql-9.0 initdb
エラーが表示されます:
Redirecting to /bin/systemctl initdb postgresql.service
Unknown operation initdb
このため、pgAdmin3も起動できません。
何が欠けていますか?
Postgresがネイティブsystemd
ユニットを使用するように変換されているシステムでは、initdb
のようなものにはpostgresql-setup
を使用する必要があります。だからあなたが欲しいのは:
postgresql-setup initdb
Rootとして「su-postgres -c ...」コマンドを実行します
私はここで答えを見つけました: https://bugzilla.redhat.com/show_bug.cgi?id=771496
問題の説明:postgresqlサーバーrpmの初期インストール後、次のコマンドをrootとして実行するまで、起動できないサービスが残っています
su-postgres -c "initdb -D/var/lib/pgsql/data"
選択したコンポーネントのバージョンリリース番号(該当する場合):
[root @ oscar]#rpm -q postgresql-server postgresql-server-9.1.2-1.fc16.x86_64
再現性:常に
いくつかの場所で、以前の指示(新しいコマンド:su-postgres -c "PGDATA =/var/lib/pgsql/data initdb")に従うのではなく、Fedora 16でこのコマンドを使用するように指示されましたが、その前に、コマンドを実行するとルートに切り替わると思いました。パスワードの入力を求め続けましたが、何も機能しませんでした。
どういうわけか、パスワードを空白のままにして、postgresユーザーとしてこれを行うことになっている場合に備えて、自分自身(sudoのように)のroot passwd、「postgres」、および「pgsql」を試しました。 rootにsuしてから、最初の 'su-'を使用せずにコマンドを実行しようとしましたが( "postgres -c ..."で始まります)、エラーが発生して次のように伝えられました。
「システムセキュリティの侵害を防ぐために、サーバーは非特権ユーザーIDで起動する必要があります。サーバーを正しく起動する方法の詳細については、ドキュメントを参照してください。」
最後に、完全なコマンド「su-postgres -c ...」をrootとして実行してみましたが、「su」を引き続き使用したところ、うまくいきました。これでサービスが開始されます。 Redhatバグ追跡に感謝!
rootにsuし、次のように入力します。
su-postgres -c "PGDATA =/var/lib/pgsql/data initdb"
次のコマンドを使用してpostgresqlサービスを開始する必要があります。
service postgresql start
initdb
ツールは、データベースサーバーのデータディレクトリを初期化する必要がある場合にのみ使用してください。これは、yum
onのようなパッケージマネージャーを使用してpostgresqlサーバーをインストールするときに自動的に行われるはずです。 centosまたはapt-get
on Ubuntu。
あなたが提供したリンクで示されているようにそれを使用することができます:
initdb -D /usr/local/pgsql/data
これは少し遅れて返答しますが、誰かに役立つかもしれません... Fedora 18では、postgresql 9.2で、シェルのPATHに/usr/pgsql-9.2/binを追加する必要があり、そこから私は走らなければなりませんでした:
postgresql92-setup initdb
/var/lib/pgsql/9.2/dataにある構成ファイルとそのすべてを取得するために。それが他の誰かに役立つことを願っています!