web-dev-qa-db-ja.com

PG :: ConnectionBad:fe_sendauth:パスワードが指定されていません

ローカルのpostgresデータベースで「rake test」を実行しようとすると、上記の例外がスローされます。

Pg_hba.confファイルは次のとおりです。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             username                                  peer
local   myapp_dev   myapp                               md5
local   myapp_test  myapp                               md5
local   myapp_prod  myapp                               md5
#local   all             all                                     peer
# IPv4 local connections:
Host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
Host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#Host    replication     postgres        127.0.0.1/32            md5
#Host    replication     postgres        ::1/128                 md5

ここに私のdatabase.ymlの関連セクションがあります

test:

adapter: postgresql
database: myapp_test
pool: 5
timeout: 5000
Host: localhost
username: username
password:

実際のdatabase.ymlでは、「username」はログインしている実際のユーザー名に置き換えられます。認証方法は「ピア」として定義されているため、パスワードは不要です。

また、Postgresを再起動するように注意しました

Sudo -u postgres pg_ctlcluster 9.3 main restart

ここに他に何が欠けていますか?

41

ホストとしてのlocalhostはTCP接続を参照します。つまり、認証方法はmd5ごとにpg_hba.conf(パスワードが必要)]になります。

#IPv4ローカル接続:
すべての127.0.0.1/32 md5 
#IPv6ローカル接続すべてをホスト:
すべてすべて:: 1:128 md5 

peerメソッドを取得するには、Unixドメインソケットを介して接続する必要があります。また、debianライクなOSを使用しているように見えるため、Hostフィールドに/var/run/postgresqlを入力するか、環境変数で特に指定されていない限り、これがデフォルトです)。

編集:データベースURI( http://weblog.rubyonrails.org/2014/4/8/Rails-4-1/ で発表されたRails-4.1以降でサポートされている)を使用する場合、構文はされる:

  • ローカルホストの場合:
    test: "postgresql://localhost/myapp_test"

  • デフォルトのUnixソケットドメインの場合(ホストフィールドは空のまま):
    test: "postgresql:///myapp_test"

27
Daniel Vérité

以下のようにコードを変更すると動作します

pg_hba.conf:
# IPv4 local connections:
Host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
Host    all             all             ::1/128                 trust

その説明の下:

信頼

無条件で接続を許可します。この方法により、PostgreSQLデータベースサーバーに接続できるすべてのユーザーが、パスワードやその他の認証を必要とせずに、希望するPostgreSQLユーザーとしてログインできます。

md5

クライアントが認証のためにダブルMD5ハッシュパスワードを提供することを要求します。

詳細については こちら

19
Ravistm

パスワードを強制するためにhb_confがすでに変更されている場合は、開発環境とテスト環境の両方でRailsアプリのデータベース構成にパスワードが含まれていることを確認してください。

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  Host: localhost
  username: your_user
  password: your_password

development:
  <<: *default
  database: your_db_development

test:
  <<: *default
  database: your_db_test

production:
  url: <%= ENV['DATABASE_URL'] %>

テストデータベースのパスワードを指定できなかったときに、このエラーが発生していました。

8
s2t2

Postgresアプリを使用しています。 database.ymlのデフォルト部分にユーザー名とパスワードを入力する必要がないため、これは本当に素晴らしいことです。

database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("Rails_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: my-app_development

test:
  <<: *default
  database: my-app_test

production:
  <<: *default
  database: my-app_production
  username: my-app
  password: <%= ENV['MY-APP_DATABASE_PASSWORD'] %>

私の問題:私はパスを変更し、postgresを動作させることができませんでした。

Solutiondocumentation を使用して:

1)アプリをアンインストールします

2)この answer を使用してpostgresプロセスを停止します。これは、Sudo pkill -u postgres

3)アプリを再インストールして起動する

これですべてがうまくいくはずです。素晴らしい一日を!

:これを行うことで問題も解決しますPostgres.app port 5432 in use

0
Jose Paez

私もこの質問に出会いました。データベース構成、/ var/www/myproject/shared/config/database.yml、production: adapter: postgresql pool: 5 timeout: 5000 encoding: utf8 Host: localhost database: myproject username: myname password: <%= ENV['name_DATABASE_PASSWORD'] %>

最後の段落が間違っていることがわかりました、正しいコードは

password: <%= ENV['myproject_DATABASE_PASSWORD'] %>

0
hofffman