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
host: localhost
undpool: 5
fehlte in meiner Konfiguration. Nach dem Hinzufügen verschwand der Fehler.host: localhost
fehlte. Nachdem ich das hinzugefügt hatte, funktionierte alles. Dies ist in Ubuntu 13.04Dies 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:
2) Geben Sie ihm einige CRUD-Funktionen. Wenn Sie nur sehen, ob Postgres funktioniert, erstellen Sie ein Gerüst:
3) Ab
rails 4.0.1
der-d postgresql
Option 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:Beachten Sie, dass der
database
Parameter für eine Datenbank gilt, die noch nicht beendet wurde, und dassusername
undpassword
Anmeldeinformationen für eine Rolle sind, die ebenfalls nicht vorhanden ist. Wir werden diese später erstellen!So
config/database.yml
sollte es aussehen (keine Schande beim Copypasting: D):4) Starten Sie die Postgres-Shell mit diesem Befehl:
4a) Möglicherweise wird dieser Fehler angezeigt, wenn Ihr aktueller Benutzer (wie Ihr Computerbenutzer) keine entsprechende Postgres-Verwaltungsrolle hat.
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:
Und dann renn
5) Sie werden wissen, dass Sie sich in der Postgres-Shell befinden, da Ihr Terminal folgendermaßen aussehen wird:
6) die postgresql - Syntax, sie erstellen die Benutzer wir in bestimmten
config/database.yml
‚s Entwicklung Abschnitt:Jetzt gibt es hier einige Feinheiten, also gehen wir sie durch.
Sie sollten dies in Ihrem Terminal sehen:
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:
Sie werden wissen, ob Sie erfolgreich waren, weil Sie die Ausgabe erhalten:
8) Verlassen Sie die Postgres-Shell:
9) Nun der Moment der Wahrheit:
Wenn Sie dies bekommen:
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
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:
9c) Setzen Sie die Berechtigungen des Verzeichnisses my_application und seines gesamten Inhalts auf 666:
9d) Führen Sie die Migration erneut aus:
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_development
Datenbank? Löschen Sie die Datenbank und erstellen Sie sie erneut mit mynewusername als Eigentümer:1) Starten Sie die Postgres-Shell:
2) Löschen Sie die
my_app_development
Datenbank. Achtung! Drop bedeutet komplett löschen!3) Erstellen Sie einen anderen
my_app_development
und machen Sie mynewusername zum Eigentümer:4) Verlassen Sie die Shell:
Der
mynewusername
Benutzer 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:
2) Starten Sie die Postgres-Shell:
3) Aktualisieren Sie
mynewusername
das Passwort. Fügen Sie das Passwort ein und denken Sie daran, es in einfache Anführungszeichen zu setzen:4) Verlassen Sie die Shell:
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)
passwd
Als Superuser ausführen:2) Geben Sie Ihr
sudo
Kontopasswort für ein (nichts mit Postgres zu tun):3) Erstellen Sie das neue Passwort des Postgres-Kontos:
Erhalten Sie diese Fehlermeldung?:
4) Sie müssen Ihrem Benutzer die Möglichkeit geben, Datenbanken zu erstellen. Aus der psql-Shell:
quelle
host: localhost
? Das war das wahre Problem für mich. Um das Passwort herum benötigen Sie einfache Anführungszeichen. Auf meiner Tastatur ist dasshift
+@
. 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 :)Für dauerhafte Lösung:
Das Problem liegt bei Ihrem pg_hba. Diese Linie:
Sollte sein
Starten Sie dann Ihren postgresql-Server neu, nachdem Sie diese Datei geändert haben.
Wenn Sie unter Linux arbeiten, lautet der Befehl
quelle
Ich hatte das gleiche Problem auf dem Ubuntu-Computer, daher habe ich diesen Fehler durch Befolgen einiger Schritte behoben. Wechseln Sie zu postgres user
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
Überprüfen Sie daher die Version von postgres, wenn mehrere Versionen verfügbar sind
Jetzt offen
postgres user
9.1
ist der obere Befehl für die Versionsrückgabeund ersetzen
zu
Starten Sie den Dienst neu
Ich schreibe auch Schritte in meinen Blog
http://tarungarg402.blogspot.in/2014/10/set-up-postgresql-on-ubuntu.html
quelle
md5
Authentifizierung 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).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.
Weitere Informationen finden Sie in diesem Problem. Die Ident-Authentifizierung ist für den Benutzer fehlgeschlagen
quelle
/var/lib/pgsql/9.2/data/pg_hba.conf
Hinzufügen
host: localhost
war die Magie für michquelle
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.quelle
Ich hatte auch das gleiche Problem, als ich in meiner Entwicklungsumgebung arbeitete. Das Problem war, dass ich
host: localhost
es in derconfig/database.yml
Datei auskommentiert habe.Daher konnte meine Anwendung keine Verbindung zur PostgreSQL-Datenbank herstellen. Durch einfaches Auskommentieren wurde das Problem behoben.
Das ist alles.
ich hoffe das hilft
quelle