8

まず最初に、私の全くの無愛想さを許してください。私は本当にそこに解決策を見つけようとしました、しかし今私は立ち往生していて完全に無知です。

Rails3アプリを離れたサーバーにデプロイしようとしています; ローカルVMで開発する場合、問題は発生しませんでした。でも今、走ろうとすると

rake db:create

エラーで失敗します(私はフランス語なので、ここでは翻訳されています):

FATAL : password authentication failed for user <<mylogin>>

これが私のdatabase.ymlです:

login: &login
  adapter: postgresql
  username: mylogin
  password: mypassword
  host: localhost
  port: 5432
  encoding: UTF8

development:
  <<: *login
  database: somesite_development

test:
  <<: *login
  database: somesite_test

production:
  <<: *login
  database: somesite_production

ユーザー「mylogin」は、コマンドラインツール「createuser」を使用してpostgre側で作成されています。dbsの作成が許可されています。postgresql.confは、ローカルホストでリッスンするようにサーバーを構成します。私はpg_hba.confで多くのことを試しましたが、どれも機能しませんでした-127.0.0.1のユーザー "mylogin"に使用された方法(ident、password、md5)に関係なく、認証は失敗します- psql。

どんな手掛かり ?

編集:さて、私がどれほど信じられないほど愚かであるかを知りました...私のユーザーのパスワードは単に設定されていませんでした!後にセミコロンを忘れたと思います

ALTER USER xxxx WITH PASSWORD xxxx;

...「SELECT*FROMpg_shadow;」をリクエストしてこれを見ました。-パスワードフィールドが空でした。このばかげた間違いのために私の人生の3日間が無駄になりました...

4

6 に答える 6

20

私もこの問題に非常に長い間立ち往生していて、さまざまなリンク(この投稿で提供されているものを含む)にアクセスして答えを見つけようとしましたが、役に立ちませんでした。ただし、解決策は非常に簡単です。他の多くの回答は正しい方向に進んでいましたが、問題を解決するための正確な手順は次のとおりです。

  1. 選択したテキストエディタでpg_hba.confファイルを開きます。(/ etc / postgresql // mainにあります)

  2. 次の行に移動します。

    #「ローカル」はUnixドメインソケット接続専用です

その下に貼り付けます。

  local all         all                 trust

これにより、ローカルマシン上のpsqlサーバーに接続しようとしているすべてのUNIXユーザーが信頼されます。(列の機能の詳細については、ページ上部のドキュメントをお読みください)

  1. pg_hba.confファイルを保存し、テキストエディタを終了します。

  2. 次のコマンドを実行して、Postgresqlサーバーを再起動します。

    service postgresql restart

  3. 次に、以下を実行してpsqlサーバーを起動してみてください。

    psql -d -U(または略して「psql」)

  4. 問題なくログインできるはずです。

*注:これはすべて、ログインに有効なpsqlユーザー名を持っていることを前提としています。以下のリンクをたどって設定しない場合:

ユーザーの設定: http ://erikonrails.snowedin.net/?p = 274

有効なpostgresユーザーがいることを確認してください:http: //archives.postgresql.org/pgsql-novice/2002-08/msg00072.php

既存のすべてのpsqlユーザーの一覧表示:「LISTUSERS」または「DISPLAYUSERS」コマンドを探している場合は、次のことを試してください。

"select * from pg_user;" (psqlにログインした場合)

幸運を!

于 2012-02-11T21:12:17.043 に答える
3

さて、私がどれほど信じられないほど愚かであるかを知りました...私のユーザーのパスワードは単に設定されていませんでした!後にセミコロンを忘れたと思います

ALTER USER xxxx WITH PASSWORD xxxx ;

...「SELECT*FROMpg_shadow;」をリクエストしてこれを見ました。-パスワードフィールドが空でした。このばかげた間違いのために私の人生の3日間が無駄になりました...

于 2011-10-08T15:02:32.137 に答える
2

私も同じ問題を抱えていました。私の場合、それは私のdatabase.ymlファイルではユーザー名が大文字で始まっていたためですが、データベースではすべて小文字でした。

解決策: postgresコマンドラインからユーザーを作成すると、すべての文字が小文字に変換されます。大文字を使用するには、二重引用符を使用する必要があります。

例:

create user AlbertEinstein; result = alberteinstein

vs

create user "AlbertEinstein"; result = AlbertEinstein

于 2013-06-29T13:40:18.740 に答える
0

ここにあなたのために働くべきであるいくつかの簡潔な指示があります

http://www.cyberciti.biz/faq/psql-fatal-ident-authentication-failed-for-user/

基本的に、ローカルホストの認証方法を「信頼」に設定する必要があります。

于 2011-05-02T03:59:05.777 に答える
0

postgresqlの「myuser」に「データベースオブジェクトを作成できる」という権限を与える必要があります。

pgadminでは、次のようになります。

ここに画像の説明を入力してください

rake db:createを呼び出した後、この特権を奪うことができます。

于 2011-05-26T07:54:48.473 に答える
0

私の場合、ファイルhost内の後のアクセス許可ルール行が前の行をオーバーライドしていることがわかりました。md5認証を使用するように回線を正しく構成していましたが、変更した回線が設定されていましたpg_hba.conflocallocalhostidentmd5

他の人がここで強調しているように、使用trustは安全でない方法であるため、実稼働スタイルのデプロイメントでは使用しないでください。

于 2017-02-12T19:56:33.490 に答える