1. ホーム
  2. ruby-on-rails

[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。

2022-03-17 13:07:08

質問

エラーが発生するのですが。

FATAL: Peer authentication failed for user "postgres"

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

以下は、私の pg_hba.conf , 私の database.yml を、そして フルトレースのダンプ .

pg_hbaで認証をmd5に変更し、いろいろと試してみましたが、どれもうまくいかないようです。

また、以下の手順で新しいユーザーとデータベースを作成してみました。 Rails 3.2, FATAL: ユーザーのピア認証に失敗しました (PG::Error)

しかし、pgadmin上では表示されず、さらに sudo -u postgres psql -l .

どこで間違っているのか、何か心当たりはありますか?

解決方法は?

問題は、やはりあなたの pg_hba.conf ファイル*を作成します。

この行は

local   all             postgres                                peer

であるべきです。

local   all             postgres                                md5

* このファイルの場所は、あまり一貫していません。コマンドは locate pg_hba.conf が役立つはずです。以下はその例です。 /etc/postgresql/*/main/pg_hba.conf/var/lib/pgsql/data/pg_hba.conf .

このファイルを変更した後、PostgreSQLサーバーを再起動することを忘れないでください。もしあなたがLinuxを使用しているならば、それは sudo service postgresql restart .

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

ピア認証

<ブロッククオート

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

パスワード認証

パスワードによる認証方法には、md5とpasswordがあります。これらの パスワードの送信方法を除いては、同じように動作します。 つまり、MD5ハッシュとクリアテキストです。

パスワードの盗聴が心配な場合は、md5を使用します。 が望ましいです。プレーンなパスワードは、可能であれば常に避けるべきでしょう。 しかし、md5はdb_user_namespace機能では使用できません。もし 接続がSSL暗号化で保護されている場合は、パスワードを使用することができます。 安全です(ただし、SSL証明書による認証の方が良いかもしれません を使用する必要がある場合)。

のサンプル位置 pg_hba.conf :
/etc/postgresql/9.1/main/pg_hba.conf