次のエラーが発生します:
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 証明書認証の方が適している可能性があります)。