2016-04-14 8 views
3
geliefert

Ich versuche Capistrano für eine Rails-Anwendung mit Postgres auf Ubuntu 14 zu laufen, lief ich in ein Passwort Fehler bei rake db:migrate -Capistrano, Schienen, PG :: ConnectionBad: fe_sendauth: kein Passwort

DEBUG [2823f146] Command: cd /home/ben/apps/mll/releases/20160414014303 && (export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.0.0-p645" RAILS_ENV="production" ; $HOME/.rbenv/bin/rbenv exec bundle exec rake db:migrate) 
DEBUG [2823f146] rake aborted! 
PG::ConnectionBad: fe_sendauth: no password supplied 

Ich habe jede Lösung für ähnliche Beiträge ausprobiert, aber kein Glück. Für Kicks Ich habe auch versucht, genau das Kommando in der Remote-App dir laufen und bekam folgendes:

PG::ConnectionBad: FATAL: password authentication failed for user "mll" 
FATAL: password authentication failed for user "mll" 

Das ist interessant, weil es meine Datenbanknamen als meinen Benutzernamen verwenden. Sehen Sie database.yml unten, so für die Hölle davon habe ich eine mll Rolle hinzugefügt, und siehe da es funktioniert, wenn nur rake db:migrate läuft. Ich habe versucht, Capistrano wieder mit dieser neuen Rolle zu spielen und immer noch kein Glück.

Ist es eine vernünftige Schätzung, dass der Benutzername nicht richtig zugegriffen/gespeichert wird? Kann ich das testen? Ich manuell ALTER ROLE ben WITH PASSWORD 'mypw'; für meine ben und mll Rollen und nichts.

Mein database.yml:

defaults: &default 
    adapter: sqlite3 
    encoding: utf8 

development: 
    <<: *default 
    database: db/development.sqlite3 

test: 
    <<: *default 
    database: db/development.sqlite3_test 

production: 
    <<: *default 
    host: localhost 
    adapter: postgresql 
    encoding: utf8 
    database: mll 
    pool: 5 
    username: <%= ENV['DATABASE_USER'] %> 
    password: <%= ENV['DATABASE_PASSWORD'] %> 

\ ich:

       List of roles 
Role name |     Attributes     | Member of 
-----------+------------------------------------------------+----------- 
ben  | Superuser, Create role, Create DB    | {} 
mll  | Superuser, Create role, Create DB    | {} 
postgres | Superuser, Create role, Create DB, Replication | {} 

ich md5 zu trust einigen Leuten geholfen lesen zu ändern, habe ich versucht, aber ich bin nicht sicher, wie alle neu zu starten Befehle, die ich gesehen habe, haben nicht für mich funktioniert.

pg_hba.conf:

local all    postgres        peer 

# TYPE DATABASE  USER   ADDRESS     METHOD 
local all    all          peer 
host all    all    127.0.0.1/32   md5 
host all    all    ::1/128     md5 

Antwort

3

Sie sollten "Vertrauen" unter Methode für localhost in pg_hba.conf verwenden. Beachten Sie, dass dies bedeutet, dass alle Verbindungen von localhost in der Lage sind, sich als Benutzer anzumelden, was wahrscheinlich in Ordnung ist, solange Sie dies für die Entwicklung verwenden.

# "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 

Nach der Änderung Ihrer pg_hba.conf Sie Postgres mit pg_ctl reload

+0

neu starten kann ich wie ein Dummkopf fühlen, habe es endlich SQL neu zu starten mit 'SELECT pg_reload_conf();' und Scheiße, die funktionierte. Vielen Dank. – Ben

+0

Kein Problem, wir waren alle dort. –

+0

Was ist mit der Produktion, irgendwelchen Ressourcen/Themen, über die ich nachlesen kann, wie ich das sicher machen kann und nicht auf dieses Problem stoße? – Ben

Verwandte Themen