web-dev-qa-db-ja.com

PostgreSQLサーバーの「ルート」実行は許可されていません

Postgresqlを開始しようとすると、エラーが発生します。

postgres

postgresは、サーバー構成ファイルの場所を知りません。
-config-fileまたは-D呼び出しオプションを指定するか、PGDATA環境変数を設定する必要があります。

だから、私は私の設定ファイルを設定しようとします:

postgres -D /usr/local/var/postgres

そして、次のエラーが表示されます。

postgresはサーバー構成ファイル「/usr/local/var/postgres/postgresql.conf」にアクセスできません:許可が拒否されました

うーん、いいよ。次に、管理者と同じアクションを実行しようとします。

 Sudo postgres -D /usr/local/var/postgres

そして、次のエラーが表示されます。

PostgreSQLサーバーの「ルート」実行は許可されていません。
システムセキュリティの侵害を防ぐために、サーバーは非特権ユーザーIDで起動する必要があります。サーバーを適切に起動する方法の詳細については、ドキュメントを参照してください。

私はそのエラーメッセージをグーグルで探しましたが、解決策が見つかりません。
誰でもこれに関する洞察を提供できますか?

15

あなたのコマンドはあなたが思っていることをしません。何かをsystem userpostgresとして実行するには:

 Sudo -u postgres command

command(別名postgres!)を実行するには:

Sudo -u postgres postgres -D /usr/local/var/postgres

あなたのコマンドは逆のことをします:

Sudo postgres -D /usr/local/var/postgres

プログラムpostgresをスーパーユーザーroot-uスイッチなしのSudo)として実行し、Postgresはセキュリティ上の理由からスーパーユーザー特権での実行を許可しません。したがって、エラーメッセージ。

システムユーザーpostgresとしていくつかのコマンドを実行する場合は、次のコマンドでユーザーを変更します。

Sudo -u postgres -i

...およびexit完了したら。

システムユーザーpostgresとして操作しているときにこのエラーメッセージが表示される場合、ファイルまたは含まれているディレクトリのいずれかのアクセス許可に問題があります。

postgresはサーバー構成ファイル「/usr/local/var/postgres/postgresql.conf」にアクセスできません:許可が拒否されました/usr/local/var/postgres/postgresql.conf

最後に:

18

公式のdockerイメージを使用してカスタムコマンドを実行しようとする場合は、次のコマンドを使用します。 docker-entrypoint.shは、ユーザーの切り替えと他の権限の処理を処理します。

docker-entrypoint.sh -c 'shared_buffers=256MB' -c 'max_connections=200'
15
Muthukumar