Bekommen:
An error has occurred:
Error connecting to the server: fe_sendauth: no password supplied
Die Einstellungen in database.yml
sind mit den App-Einstellungen auf anderen Computern identisch.
Wie kann ich die Einstellungen so einrichten, dass ich kein Kennwort in fester Codierung benötige?
Ich kann die Datenbank in Ordnung mit PgAdmin-III anzeigen.
Ich hätte das Passwort lieber nicht in database.yml
, da andere Computer, die diese App verwenden, es nicht haben/brauchen, daher scheint es etwas mit meiner Pg-Installation zu tun zu haben.
Sie müssen Ihren pg_hba.conf
ändern. Hier ist ein Beispiel von mir:
pg_hba.conf
:
TYPE DATABASE USER ADDRESS METHOD
Host all all 127.0.0.1/32 trust
Host all PC 127.0.0.1/32 trust
Host all all ::1/128 trust
Beachten Sie, dass trust
bedeutet, dass sich jeder Benutzer von address
(in diesem Fall localhost) als aufgelisteter Benutzer (oder in diesem Fall jeder Benutzer seiner Wahl) verbinden kann. Dies ist wirklich nur für Entwicklungskonfigurationen mit unwichtigen Daten geeignet. Verwenden Sie dies nicht in der Produktion .
@ rodrigo-zurek war genau richtig; Sie müssen den pg_hba.conf
ändern. Diese Antwort sollte nur für OSX-Benutzer hinzugefügt werden, da sich pg_hba.conf
standardmäßig an einer anderen Stelle befindet.
Sudo su - postgres
vim /Library/PostgreSQL/<YOUR_VERSION>/data/pg_hba.conf
Der Standardwert lautet md5
in der Spalte METHOD
, ersetzt jedoch alle durch trust
:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
Host all all 127.0.0.1/32 trust
# IPv6 local connections:
Host all all ::1/128 trust
Öffnen Sie dann pgAdmin III in Applications/PostgreSQL 9.X, klicken Sie mit der rechten Maustaste auf die Datenbank (z. B. PostgreSQL 9.4 (localhost)
) und klicken Sie auf Reload Configuration
. Danach konnte ich rake db:create
.
Wenn kein Kennwort angegeben wurde, bedeutet dies, dass Sie die Kennwortauthentifizierung verlangt haben und kein Kennwort angegeben wird. Hier ist Dokumentation für 9.0: http://www.postgresql.org/docs/9.0/static/auth-methods.html
Beachten Sie, dass local auth in 9.1 von "ident" in "peer" geändert wurde, um Verwirrung zu vermeiden. Siehe die 9.1-Dokumente unter http://www.postgresql.org/docs/9.1/static/auth-methods.html
Denken Sie auch daran, dass dies ein geordneter Regelsatz ist, der die erste Übereinstimmung regelt. Außerdem unterscheiden sich local und localhost. Local ist für lokale UNIX-Domänensockelverbindungen, während Host localhost für Netzwerkverbindungen zu localhost gilt. Es klingt also so, als hätten Sie einige Fehlerbehebungsaufgaben, die hoffentlich helfen sollten.
#appveyor.yml
services: postgresql
test_script:
- SET PGUSER=postgres
- SET PGPASSWORD=Password12!
- PATH=C:\Program Files\PostgreSQL\9.6\bin\;%PATH%