2012-09-17 16 views
25

Ottenere:provando ad installare Postgres per ror app, ottenendo errore - fe_sendauth: nessuna password fornita

An error has occurred: 

Error connecting to the server: fe_sendauth: no password supplied 

Impostazioni nel database.yml sono gli stessi della configurazione app su altre macchine.

Come posso impostare le cose in modo che non ho bisogno di una password hardcoded?

Posso visualizzare il db ok utilizzando PgAdmin-III.

Preferisco non avere la password in database.yml poiché altre macchine che utilizzano questa app non ne hanno/hanno bisogno, quindi sembra probabile che si tratti di una mia installazione Pg.

+0

Direi che è necessario dare un'occhiata a 'pg_hba.conf' e vedere se sono state aggiunte le regole' ident' o 'trust' per gli altri DB; confronta con questo. –

risposta

60

è necessario modificare la modifica vostro pg_hba.conf. Ecco un esempio di mio:

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 

noti che trust significa che chiunque su address (in questo caso localhost) in grado di connettersi come utente quotata (o in questo caso qualsiasi utente di loro scelta) . Questo è davvero adatto solo per configurazioni di sviluppo con dati non importanti. Non utilizzare in produzione.

+3

Grazie. Purtroppo ho fatto questo e ho riavviato Postgres ma non è stato d'aiuto. Lo stesso errore. –

+7

@MichaelDurrant Sicuro che ti stai collegando al server giusto e modificando il giusto 'pg_hba.conf'? Prova 'SHOW hba_file;' in psql per trovare 'pg_hba.conf'. Controlla anche i log del server PostgreSQL. –

+0

Ho dovuto cambiare "PC" a "tutti" per farlo funzionare, ma per il resto grazie per questa risposta! –

0

Nessuna password fornita significa che è stato impostato in modo da richiedere l'autenticazione della password e nessuna password viene fornita. Ecco la documentazione per 9.0: http://www.postgresql.org/docs/9.0/static/auth-methods.html

Ricordare che l'autenticazione locale è stata modificata da "ident" a "peer" in 9.1 per evitare confusione. Vedi le 9.1 documentazione in http://www.postgresql.org/docs/9.1/static/auth-methods.html

Anche tenere a mente che questa è una regola ordinata insieme con il primo incontro di governo. Inoltre, local e localhost sono diversi. Locale è per le connessioni socket locali del dominio UNIX, mentre host localhost è per le connessioni di rete a localhost. Quindi sembra che tu abbia qualche problema da risolvere, ma spero che i documenti dovrebbero aiutare.

9

@ rodrigo-zurek era azzeccato; devi cambiare il pg_hba.conf. Voglio solo aggiungere questa risposta per gli utenti OSX perché lo pg_hba.conf si trova in un posto diverso per impostazione predefinita.

sudo su - postgres 
vim /Library/PostgreSQL/<YOUR_VERSION>/data/pg_hba.conf 

L'impostazione predefinita avrà md5 nella colonna METHOD, ma sostituire tutti quelli con 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 

Poi, aprire pgAdmin III dentro le Applicazioni/PostgreSQL 9.x, fate clic destro del database (ad es. PostgreSQL 9.4 (localhost)) e fare clic su Reload Configuration. Dopo questo, sono stato in grado di rake db:create.

+0

Puoi dirmi come modificare 'pg_hba.conf' e salvare? Sono nuovo di Mac – Shana

0
#appveyor.yml 
services: postgresql 
test_script: 
    - SET PGUSER=postgres 
    - SET PGPASSWORD=Password12! 
    - PATH=C:\Program Files\PostgreSQL\9.6\bin\;%PATH% 
Problemi correlati