web-dev-qa-db-ja.com

PostgreSQLが起動しません: "server.key"はグループまたはワールドにアクセスできます

いつでも、次のコマンドを使用してPostgreSQLを起動します。

$ Sudo /etc/init.d/postgresql start

Pgが起動しません。報告されるエラーは次のとおりです。

 * Starting PostgreSQL 8.4 database server
 * The PostgreSQL server failed to start. Please check the log output:
2010-01-21 22:10:00 PST FATAL: private key file "server.key" has group or world access
2010-01-21 22:10:00 PST DETAIL: File must be owned by the database user or root, must have no write permission for "group", and must have no permissions for "other".

...そしてpsqlユーザーとしてpostgresにアクセスしようとすると:

$ Sudo su postgres
$ psql

それは私にエラーを与えます:

 could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
25
Atul Arvind

私はそれを使ってそれを解決しました...

1)関連するディレクトリを入力します(use> Locate server.key)

2)古いserver.keyリンクをバックアップします。

3)ssl-cert-snakeoil.keyをserver.keyにコピーします

4-5)所有者とグループをpostgresに変更します

6)権限が700または740であることを確認します(エラーメッセージで要求されているとおり)

私のUbuntu 12.04とpostgresql-8.3のレシピ:

Sudo cd /var/lib/postgresql/8.3/main/
Sudo mv server.key server.key-0
Sudo cp /etc/ssl/private/ssl-cert-snakeoil.key server.key
Sudo chown postgres server.key
Sudo chgrp postgres server.key
Sudo chmod 740 server.key
Sudo /etc/init.d/postgres-8.3 start

そして今、その働き!サポートありがとうございます。

49
Atul Arvind

サーバーキーをハードコピーしないで、どこにでも好きなように残しておくとどうでしょう。

代わりに、次のことを単純化します。

"server.key"リンクのアクセス許可をPostgreSQLデータディレクトリ(プライベートなcertificate.keyファイルへのリンクが存在する場所)で変更します。

# cd /var/lib/postgresql/9.1/main/

# chown -R postgres:postgres server.key`

そして、元の証明書が

# /etc/ssl/private/ssl-cert-snakeoil.key

それらを設定することにより、それらのプロパティを持っています

# chmod 640 ssl-cert-snakeoil.key
# chown root:ssl-cert ssl-cert-snakeoil.key

このソリューションはDebianでテストされています。 CentOSは、拡張されたユーザー権利管理を備えたSELinuxを使用できることを覚えておいてください。

# ls -laZ *
7
ERF

エラーメッセージが示すように、キーファイルの権限を修正しますserver.key。サーバーは、ファイルを所有する必要があるユーザー「postgres」として実行されます。試す

#cd <path/to/pgsql/data> 
#chown postgres server.key
#chmod 0640 server.key
6
Swair

それは私に起こり、私が誤ってpostgresユーザーを「ssl-cert」グループから削除したことがわかりました。

gpasswd -a postgres ssl-cert

3
guillaume

/etc/ssl/privateの権限をroot:ssl-certに設定します。 this issue についてのコメントにより、このソリューションを試してみることができました。

[〜#〜]ノート[〜#〜]:偶数タフな答えは受け入れられました、それは私の問題を解決しませんでした。他の誰かを助けるために私はここに答えたかった

3
ilhnctn
Sudo chown postgres /var/lib/postgresql/8.4/main/server.key

Sudo chmod 0640 /var/lib/postgresql/8.4/main/server.key

Postgresqlの後にタブを押して、バージョンを確認します。

2
xunil