Rails: FATAL - Peer-Authentifizierung für Benutzer fehlgeschlagen (PG :: Error)

143

Ich führe meine Entwicklung unter Ubuntu 11.10 und RubyMine aus

Hier sind meine Entwicklungseinstellungen für die database.yml: die RubyMine für mich erstellt hat

development:
  adapter: postgresql
  encoding: unicode
  database: mydb_development
  pool: 5
  username: myuser
  password:

Wenn ich versuche, die App auszuführen, wird der folgende Fehler angezeigt. Es scheint, dass ich noch keinen 'Projekt'-Benutzer erstellt habe. Wie kann ich jedoch einen Benutzer erstellen und ihm eine Datenbank in Postgres gewähren? Wenn dies das Problem ist, welches Tool wird in Ubuntu für diese Aufgabe empfohlen? Wenn dies nicht das Problem ist, raten Sie bitte.

Exiting
/home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `initialize': FATAL:  Peer authentication failed for user "project" (PG::Error)
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `new'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `connect'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:303:in `new_connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:313:in `checkout_new_connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:237:in `block (2 levels) in checkout'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:232:in `loop'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:232:in `block in checkout'
    from /home/sam/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:229:in `checkout'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `retrieve_connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/model_schema.rb:308:in `clear_cache!'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/railtie.rb:91:in `block (2 levels) in <class:Railtie>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:418:in `_run__757346023__prepare__404863399__callbacks'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:405:in `__run_callback'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:385:in `_run_prepare_callbacks'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:81:in `run_callbacks'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/actionpack-3.2.3/lib/action_dispatch/middleware/reloader.rb:74:in `prepare!'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/actionpack-3.2.3/lib/action_dispatch/middleware/reloader.rb:48:in `prepare!'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/application/finisher.rb:47:in `block in <module:Finisher>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `instance_exec'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `run'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `each'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `run_initializers'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/application.rb:136:in `initialize!'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /home/sam/RubymineProjects/project/config/environment.rb:5:in `<top (required)>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `block in require'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
    from /home/sam/RubymineProjects/project/config.ru:4:in `block in <main>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
    from /home/sam/RubymineProjects/project/config.ru:1:in `new'
    from /home/sam/RubymineProjects/project/config.ru:1:in `<main>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:200:in `app'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands/server.rb:46:in `app'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:252:in `start'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands/server.rb:70:in `start'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:55:in `block in <top (required)>'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:50:in `tap'
    from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:50:in `<top (required)>'
    from /home/sam/RubymineProjects/project/script/rails:6:in `require'
    from /home/sam/RubymineProjects/project/script/rails:6:in `<top (required)>'
    from -e:1:in `load'
    from -e:1:in `<main>'

Process finished with exit code 1
simo
quelle

Antworten:

315

Wenn Sie postresql auf Ihrem Server installiert haben, hosten Sie einfach: localhost in database.yml. Normalerweise werfe ich es dort herum, wo Pool steht: 5. Wenn es nicht localhost ist, teilen Sie dieser App definitiv mit, wo sich die Datenbank befindet.

development:
  adapter: postgresql
  encoding: unicode
  database: kickrstack_development
  host: localhost
  pool: 5
  username: kickrstack
  password: secret

Stellen Sie sicher, dass Ihre Benutzeranmeldeinformationen korrekt eingestellt sind, indem Sie eine Datenbank erstellen und dem Benutzer Ihrer App den Besitz zuweisen, um die Verbindung herzustellen. So erstellen Sie einen neuen Benutzer in postgresql 9:

sudo -u postgres psql

Legen Sie das Postgresql-Benutzerkennwort fest, falls dies nicht der Fall ist. Es handelt sich lediglich um ein Backslash-Kennwort.

postgres=# \password

Erstellen Sie einen neuen Benutzer und ein neues Kennwort sowie die neue Datenbank des Benutzers:

postgres=# create user "guy_on_stackoverflow" with password 'keepitonthedl';
postgres=# create database "dcaclab_development" owner "guy_on_stackoverflow"; 

Aktualisieren Sie nun Ihre Datei database.yml, nachdem Sie die Erstellung der Datenbank, des Benutzers und des Kennworts bestätigt und diese Berechtigungen festgelegt haben. Gastgeber nicht vergessen: localhost.

Gebogener Kardan
quelle
2
Wenn Sie immer noch Probleme haben, sich anzumelden und die Verbindung über localhost herzustellen, kehren Sie über das Terminal zu postgresql zurück und wenden Sie einige dieser 8.2-Konventionen an, um die Berechtigungen Ihres Verbindungsbenutzers festzulegen. Die Syntax lautet GRANT ALL ON DATABASE [Datenbankname] bis [Benutzername]. Diese Syntax funktioniert unter psql 9+ genauso, aber Sie können wahrscheinlich nur die Berechtigungen für Datenbanken umschalten,
Bent Cardan
38
host: localhostund pool: 5fehlte in meiner Konfiguration. Nach dem Hinzufügen verschwand der Fehler.
Amit Patel
21
Für mich host: localhostfehlte. Nachdem ich das hinzugefügt hatte, funktionierte alles. Dies ist in Ubuntu 13.04
Jesse
7
Ebenfalls wichtig zu betonen: VERGESSEN SIE DIE SEMIKOLONEN NICHT .
Maarten
Persönlich denke ich, dass es wichtig ist, das Setup mit rake db: setup ausführen zu können. Andernfalls treten Probleme beim Generieren einer neuen Bereitstellungsumgebung auf. Diese Beschreibung funktioniert jedoch für eine Entwicklungsumgebung.
Ashley Raiteri
54

Dies ist die kinderleichteste Methode, um Ihre Rails-App mit Postgres in der Entwicklungsumgebung in Ubuntu 13.10 zum Laufen zu bringen .

1) Erstellen Sie eine Rails-App mit postgres YAML und 'pg' gem in der Gemfile:

$ rails new my_application -d postgresql

2) Geben Sie ihm einige CRUD-Funktionen. Wenn Sie nur sehen, ob Postgres funktioniert, erstellen Sie ein Gerüst:

$ rails g scaffold cats name:string age:integer colour:string

3) Ab rails 4.0.1der -d postgresqlOption wird eine YAML generiert, die keinen Host-Parameter enthält. Ich fand, ich brauchte das. Bearbeiten Sie den Entwicklungsabschnitt und erstellen Sie die folgenden Parameter:

encoding: UTF-8
host: localhost
database: my_application_development
username: thisismynewusername
password: thisismynewpassword 

Beachten Sie, dass der databaseParameter für eine Datenbank gilt, die noch nicht beendet wurde, und dass usernameund passwordAnmeldeinformationen für eine Rolle sind, die ebenfalls nicht vorhanden ist. Wir werden diese später erstellen!

So config/database.ymlsollte es aussehen (keine Schande beim Copypasting: D):

development:
  adapter: postgresql
  pool: 5
  # these are our new parameters
  encoding: UTF-8
  database: my_application_development
  host: localhost
  username: thisismynewusername
  password: thisismynewpassword

test:
  # this won't work 
  adapter: postgresql
  encoding: unicode
  database: my_application_test
  pool: 5
  username: my_application
  password:

production:
  # this won't work 
  adapter: postgresql
  encoding: unicode
  database: my_application_production
  pool: 5
  username: my_application
  password:

4) Starten Sie die Postgres-Shell mit diesem Befehl:

$ psql

4a) Möglicherweise wird dieser Fehler angezeigt, wenn Ihr aktueller Benutzer (wie Ihr Computerbenutzer) keine entsprechende Postgres-Verwaltungsrolle hat.

psql: FATAL:  role "your_username" does not exist

Jetzt habe ich postgres nur einmal installiert, daher kann ich mich hier irren, aber ich denke, postgres erstellt automatisch eine Verwaltungsrolle mit denselben Anmeldeinformationen wie der Benutzer, unter dem Sie postgres installiert haben.

4b) Das bedeutet, dass Sie zu dem Benutzer wechseln müssen, der postgres installiert hat, um den Befehl psql zu verwenden und die Shell zu starten:

$ sudo su postgres

Und dann renn

$ psql

5) Sie werden wissen, dass Sie sich in der Postgres-Shell befinden, da Ihr Terminal folgendermaßen aussehen wird:

$ psql
psql (9.1.10)
Type "help" for help.

postgres=# 

6) die postgresql - Syntax, sie erstellen die Benutzer wir in bestimmten config/database.yml‚s Entwicklung Abschnitt:

postgres=# CREATE ROLE thisismynewusername WITH LOGIN PASSWORD 'thisismynewpassword';

Jetzt gibt es hier einige Feinheiten, also gehen wir sie durch.

  • Der Benutzername der Rolle, thisismynewusername , enthält keinerlei Anführungszeichen
  • Geben Sie das Schlüsselwort LOGIN nach dem WITH an . Wenn Sie dies nicht tun, wird die Rolle weiterhin erstellt, sie kann sich jedoch nicht bei der Datenbank anmelden!
  • Das Kennwort der Rolle, thisismynewpassword , muss in einfachen Anführungszeichen stehen. Keine doppelten Anführungszeichen .
  • Fügen Sie am Ende ein Semikolon hinzu;)

Sie sollten dies in Ihrem Terminal sehen:

postgres=#
CREATE ROLE
postgres=#

Das bedeutet "ROLLE ERSTELLT", aber die Warnungen von Postgres scheinen die gleichen zwingenden Konventionen von Git Hub zu übernehmen.

7) Jetzt, noch in der Postgres-Shell, müssen wir die Datenbank mit dem Namen erstellen, den wir in der YAML festgelegt haben. Machen Sie den Benutzer, den wir in Schritt 6 erstellt haben, zu seinem Besitzer:

postgres=# CREATE DATABASE my_application_development OWNER thisismynewusername;

Sie werden wissen, ob Sie erfolgreich waren, weil Sie die Ausgabe erhalten:

CREATE DATABASE

8) Verlassen Sie die Postgres-Shell:

\q

9) Nun der Moment der Wahrheit:

$ RAILS_ENV=development rake db:migrate

Wenn Sie dies bekommen:

==  CreateCats: migrating =================================================
-- create_table(:cats)
   -> 0.0028s
==  CreateCats: migrated (0.0028s) ========================================

Herzlichen Glückwunsch, postgres funktioniert perfekt mit Ihrer App.

9a) Auf meinem lokalen Computer wurde immer wieder ein Berechtigungsfehler angezeigt. Ich kann mich nicht genau daran erinnern, aber es war ein Fehler in der Art von

Can't access the files. Change permissions to 666.

Obwohl ich raten würde, sehr sorgfältig über das rekursive Festlegen von Schreibberechtigungen auf einer Produktionsmaschine nachzudenken, gab ich meiner gesamten App Lese- und Schreibrechte wie folgt:

9b) Steige eine Verzeichnisebene hinauf:

$ cd ..

9c) Setzen Sie die Berechtigungen des Verzeichnisses my_application und seines gesamten Inhalts auf 666:

$ chmod -R 0666 my_application

9d) Führen Sie die Migration erneut aus:

$ RAILS_ENV=development rake db:migrate

==  CreateCats: migrating =================================================
-- create_table(:cats)
   -> 0.0028s
==  CreateCats: migrated (0.0028s) ========================================

Einige Tipps und Tricks, wenn Sie Mist bauen

Probieren Sie diese aus, bevor Sie alle folgenden Schritte neu starten:

Der Benutzer mynewusername hat keine Berechtigungen zum CRUD für die my_app_developmentDatenbank? Löschen Sie die Datenbank und erstellen Sie sie erneut mit mynewusername als Eigentümer:

1) Starten Sie die Postgres-Shell:

$ psql

2) Löschen Sie die my_app_developmentDatenbank. Achtung! Drop bedeutet komplett löschen!

postgres=# DROP DATABASE my_app_development;

3) Erstellen Sie einen anderen my_app_developmentund machen Sie mynewusername zum Eigentümer:

postgres=# CREATE DATABASE my_application_development OWNER mynewusername;

4) Verlassen Sie die Shell:

postgres=# \q

Der mynewusernameBenutzer kann sich nicht in die Datenbank einloggen? Denken Sie, Sie haben das falsche Passwort in die YAML geschrieben und können sich nicht ganz an das Passwort erinnern, das Sie mit der Postgres-Shell eingegeben haben? Ändern Sie einfach die Rolle mit dem YAML-Passwort:

1) Öffnen Sie Ihre YAML und kopieren Sie das Passwort in Ihre Zwischenablage:

 development:
      adapter: postgresql
      pool: 5
      # these are our new parameters
      encoding: UTF-8
      database: my_application_development
      host: localhost
      username: thisismynewusername
      password: musthavebeenverydrunkwheniwrotethis

2) Starten Sie die Postgres-Shell:

$ psql    

3) Aktualisieren Sie mynewusernamedas Passwort. Fügen Sie das Passwort ein und denken Sie daran, es in einfache Anführungszeichen zu setzen:

postgres=# ALTER ROLE mynewusername PASSWORD `musthavebeenverydrunkwheniwrotethis`;

4) Verlassen Sie die Shell:

postgres=# \q

Versuchen Sie, über einen Datenbank-Viewer wie Dbeaver eine Verbindung zu localhost herzustellen, und wissen Sie nicht, wie das Kennwort Ihres Postgres-Benutzers lautet? Ändern Sie es so:

1) passwdAls Superuser ausführen:

$ sudo passwd postgres

2) Geben Sie Ihr sudoKontopasswort für ein (nichts mit Postgres zu tun):

[sudo] password for starkers: myaccountpassword

3) Erstellen Sie das neue Passwort des Postgres-Kontos:

Enter new UNIX password: databasesarefun
Retype new UNIX password: databasesarefun
passwd: password updated successfully

Erhalten Sie diese Fehlermeldung?:

Run `$ bin/rake db:create db:migrate` to create your database
$ rake db:create db:migrate
PG::InsufficientPrivilege: ERROR:  permission denied to create database

4) Sie müssen Ihrem Benutzer die Möglichkeit geben, Datenbanken zu erstellen. Aus der psql-Shell:

ALTER ROLE thisismynewusername WITH CREATEDB
Starkers
quelle
1
Ich wünschte, ich könnte Ihnen mehr +1 s für diese brillante Lösung geben. Ich wäre noch glücklicher, wenn es für mich funktionieren würde. immer noch brillante Antwort. Kurze Frage, sind diese Backticks um das Passwort in einer anderen Rolle? Außerdem müssen Sie keine Backticks früher verwenden, oder?
Mike HR
@ MikeH-R Danke, schade, dass es bei dir nicht funktioniert! Sind Sie sicher, dass Ihre relevante YAML hat host: localhost? Das war das wahre Problem für mich. Um das Passwort herum benötigen Sie einfache Anführungszeichen. Auf meiner Tastatur ist das shift+ @. Mit der psql-Shell benötigen Sie nur einfache Anführungszeichen um einige Parameter. Sie benötigen sie beispielsweise um das Kennwort und nicht um den Namen der Rolle. Es ist sehr fummelig, um ehrlich zu sein, aber okay, wenn Sie wissen, dass es Nuancen sind :)
Starkers
@ MikeH-R Ich habe meine Antwort optimiert, um die Dinge klarer zu machen. Erwägen Sie einen weiteren Riss!
Starkers
Ich habe es jetzt geklärt, nochmals vielen Dank für eine brillante Antwort. Die meisten anderen Antworten betrafen die Lockerung der Sicherheit, was in der Produktion offensichtlich nicht gut ist.
Mike HR
29

Für dauerhafte Lösung:

Das Problem liegt bei Ihrem pg_hba. Diese Linie:

local   all             postgres                                peer

Sollte sein

local   all             postgres                                md5

Starten Sie dann Ihren postgresql-Server neu, nachdem Sie diese Datei geändert haben.

Wenn Sie unter Linux arbeiten, lautet der Befehl

sudo service postgresql restart
Sumit Munot
quelle
1
Danke dir! Das ist die wahre Antwort.
Skplunkerin
9

Ich hatte das gleiche Problem auf dem Ubuntu-Computer, daher habe ich diesen Fehler durch Befolgen einiger Schritte behoben. Wechseln Sie zu postgres user

$ sudo su - postgres

Es wird nach dem Passwort gefragt und standardmäßig ist das Passwort postgres

Öffnen Sie die psql-Konsole, nachdem Sie den Benutzer auf postgres umgestellt haben

$ psql

Überprüfen Sie daher die Version von postgres, wenn mehrere Versionen verfügbar sind

psql=# select VERSION();

PostgreSQL 9.1.13 on x86_64-unk....         # so version is 9.1

Jetzt offen postgres user

vim /etc/postgresql/9.1/main/pg_hba.conf

9.1 ist der obere Befehl für die Versionsrückgabe

und ersetzen

local   all             postgres                                peer

zu

local   all             postgres                                md5

Starten Sie den Dienst neu

sudo service postgresql restart

Ich schreibe auch Schritte in meinen Blog

http://tarungarg402.blogspot.in/2014/10/set-up-postgresql-on-ubuntu.html

Tarun Garg
quelle
Sie haben die richtige Antwort gegeben und nur eine Sache verpasst, die Sie nicht benötigen, um die Version zu überprüfen. Sie können das Passwort ändern, indem Sie diesen Befehl ausführen, nachdem psql Benutzer "Benutzername" geändert hat. Setzen Sie das Passwort 'xyz'.
Vishu
Denken Sie daran, dass für die md5Authentifizierung ein Nicht-Null-Kennwort für Ihren Datenbankbenutzer erforderlich ist (dies wurde heute gerade behoben, als versucht wurde, die Faulheit beim Erstellen einer Rails-Anwendung zu maximieren).
Mark Leighton Fisher
5

Sie können zu Ihrer Datei /var/lib/pgsql/data/pg_hba.conf gehen und anstelle von Ident Vertrauen hinzufügen. Es hat bei mir funktioniert.

local   all all trust
host    all 127.0.0.1/32    trust

Weitere Informationen finden Sie in diesem Problem. Die Ident-Authentifizierung ist für den Benutzer fehlgeschlagen

Rastee
quelle
Centos 6.6, versuchen Sie:/var/lib/pgsql/9.2/data/pg_hba.conf
Patrick
4

Hinzufügen host: localhostwar die Magie für mich

development:
  adapter: postgresql
  database: database_name_here
  host: localhost
  username: user_name_here
ispirett
quelle
0

Wenn Peer authentication failed for user (PG::Error)beim Ausführen von Komponententests die Fehlermeldung ( ) angezeigt wird, stellen Sie sicher, dass die Testdatenbank vorhanden ist.

David Winiecki
quelle
0

Ich hatte auch das gleiche Problem, als ich in meiner Entwicklungsumgebung arbeitete. Das Problem war, dass ich host: localhostes in der config/database.ymlDatei auskommentiert habe.

Daher konnte meine Anwendung keine Verbindung zur PostgreSQL-Datenbank herstellen. Durch einfaches Auskommentieren wurde das Problem behoben.

development:
  <<: *default
  database: database_name

  username: database_username 

  password: database_password

  host: localhost

Das ist alles.

ich hoffe das hilft

Versprich Preston
quelle