Rails で pgsql を動作させようとしたときに、ユーザー "postgres" のピア認証に失敗しました。質問する

Rails で pgsql を動作させようとしたときに、ユーザー

次のエラーが発生します:

FATAL: Peer authentication failed for user "postgres"

postgres を Rails で動作させようとするとき。

これが私のpg_hba.conf、 私のdatabase.yml、そして完全なトレースのダンプ

pg_hba で認証を md5 に変更し、さまざまなことを試しましたが、どれも機能しないようです。

また、新しいユーザーとデータベースを作成してみましたRails 3.2、致命的: ユーザーのピア認証に失敗しました (PG::Error)

しかし、それらは pgadmin には表示されず、 を実行しても表示されませんsudo -u postgres psql -l

どこが間違っているのか分かりますか?

ベストアンサー1

問題は依然としてpg_hba.confファイルにあります*。

この行:

local   all             postgres                                peer

正しくは:

local   all             postgres                                md5

このファイルを変更した後は、PostgreSQL サーバーを再起動することを忘れないでください。Linux の場合は、次のようになりますsudo systemctl restart postgresql(古いシステムの場合: sudo service postgresql restart)。


位置特定hba.conf

このファイルの場所はあまり一貫していないことに注意してください。

ファイルの場所を検出するには、 PostgreSQL を使用するlocate pg_hba.confか、PostgreSQL に問い合わせることができます。SHOW hba_file;

通常の場所は/etc/postgresql/[version]/main/pg_hba.confとです/var/lib/pgsql/data/pg_hba.conf


peerこれらは、 VSmd5オプションの簡単な説明です。認証方法に関するPostgreSQL公式ドキュメント

ピア認証

ピア認証方法は、カーネルからクライアントのオペレーティング システムのユーザー名を取得し、それを許可されたデータベース ユーザー名として使用することによって機能します (オプションのユーザー名マッピングを使用)。この方法は、ローカル接続でのみサポートされます。

パスワード認証

パスワードベースの認証方法は、md5 とパスワードです。これらの方法は、パスワードが接続を介して送信される方法 (それぞれ MD5 ハッシュとクリアテキスト) を除いて、同様に動作します。

パスワードの「スニッフィング」攻撃が心配な場合は、md5 が推奨されます。可能であれば、プレーン パスワードは常に避けてください。ただし、md5 は db_user_namespace 機能では使用できません。接続が SSL 暗号化によって保護されている場合は、パスワードを安全に使用できます (ただし、SSL の使用に依存している場合は、SSL 証明書認証の方が適している可能性があります)。

おすすめ記事