rake db: creare fallisce, problema di autenticazione con PostgreSQL 8.4
-
26-10-2019 - |
Domanda
Per prima cosa, vi prego di scusare la mia noobness assoluta. Ho cercato di trovare una soluzione là fuori, ma ora mi sono bloccato e completamente all'oscuro.
Sto cercando di distribuire un Rails 3 applicazione su un server remoto; quando sviluppando sul mio VM locali, nessun problema ha mostrato. Ma ora, quando provo a eseguire
rake db:create
non riesce, con l'errore (qui tradotto, dal momento che io sono francese):
FATAL : password authentication failed for user <<mylogin>>
ecco la mia database.yml:
login: &login
adapter: postgresql
username: mylogin
password: mypassword
host: localhost
port: 5432
encoding: UTF8
development:
<<: *login
database: somesite_development
test:
<<: *login
database: somesite_test
production:
<<: *login
database: somesite_production
l'utente "myLogin" è stata creata postgre a fianco con la linea di comando funzione "createuser". E 'autorizzato a creare DBS. postgresql.conf configura il server per l'ascolto su localhost. Ho provato molte cose con pg_hba.conf, nessuno ha lavorato - qualunque sia il metodo utilizzato (ident, password MD5) per l'utente "myLogin" su 127.0.0.1, l'autenticazione non riesce - se non ho mai avuto problemi di connessione / creazione di DBS con psql.
alcun indizio?
EDIT: ok, scoperto quanto sia incredibilmente stupido sono stato ... la password per il mio utente non era semplicemente set! Penso che ho dimenticato il punto e virgola dopo
ALTER xxxx UTENTE CON PASSWORD xxxx;
... ho visto questo richiedendo "SELECT * FROM pg.shadow;" - il campo password era vuoto. Tre giorni della mia vita sprecata a causa di questo errore stupido ...
Soluzione 2
va bene, ha scoperto quanto sia incredibilmente stupido sono stato ... la password per il mio utente non era semplicemente set! Penso che ho dimenticato il punto e virgola dopo
ALTER USER xxxx WITH PASSWORD xxxx ;
... ho visto questo richiedendo "SELECT * FROM pg.shadow;" - il campo password era vuoto. Tre giorni della mia vita sprecata a causa di questo errore stupido ...
Altri suggerimenti
I è stato anche bloccato su questo problema per un tempo molto lungo, ed è andato a una serie di collegamenti (tra cui quelli offerti in questo post) per cercare di trovare la risposta, ma senza alcun risultato. Tuttavia, la soluzione è molto semplice. Mentre molte delle altre risposte erano sulla strada giusta qui sono i passaggi esatti per risolvere il problema:
-
Aprire il file di pg_hba.conf in un editor di testo di vostra scelta. (Si trova in / etc / postgresql // principale)
-
Passare alla riga che legge:
# "locale" è per le connessioni socket di dominio Unix solo
e incollarlo sotto di esso:
local all all trust
In questo modo fiducia in tutti gli utenti UNIX che tentano di connettersi al server psql sulla macchina locale. (Leggi la documentazione in cima alla pagina per ulteriori informazioni sulla funzione di colonne)
-
Salva il file pg_hba.conf e uscire dall'editor di testo.
-
Riavviare il server PostgreSQL eseguendo il comando:
servizio PostgreSQL restart
-
Ora cercare di avviare un server psql eseguendo:
psql -d -U (o "psql" per brevità)
-
Si dovrebbe essere in grado di log in senza alcun problema.
* Nota: Tutto questo presuppone che avere un nome utente psql valida per l'accesso Se non si seguono i link qui sotto per crearne uno:.
Impostazione di un utente: http://erikonrails.snowedin.net/?p=274
Fare in modo di avere un utente postgres validi: http://archives.postgresql.org/pgsql-novice/2002-08/msg00072.php
Elenco di tutti gli utenti PSQL esistenti: Se siete alla ricerca di un "Elenca gli utenti" o "upload Mostra" comando quindi provare:
"select * from pg_user;" (Quando loggato per psql)
In bocca al lupo!
Ho avuto lo stesso problema. Nel mio caso è stato perché nella mia database.yml file il nome utente iniziato con la lettera maiuscola, ma nel database è stato tutto in minuscolo.
Soluzione: Durante la creazione utente postgres Command Line, converte tutte le lettere in minuscole. Per usando le lettere maiuscole, virgolette devono essere utilizzati.
Esempio:
create user AlbertEinstein; result = alberteinstein
vs
create user "AlbertEinstein"; result = AlbertEinstein
Ecco alcune istruzioni concise che dovrebbe funzionare per voi
http://www.cyberciti.biz / faq / psql-fatale-ident-authentication-failed-per-user / .
In sostanza è necessario impostare il metodo di autenticazione per localhost a 'fiducia'.
È necessario dare "myuser" in PostgreSQL privilegio "Impossibile creare oggetti di database".
In pgAdmin, sembra che questo:
Dopo aver chiamato rake db:. Creare, si può togliere questo privilegio
Nel mio caso, ho scoperto che una successiva permessi host
regola riga nel file pg_hba.conf
era over-cavalcato la linea local
in precedenza. Mi è stato correttamente la configurazione della linea di local
per utilizzare l'autenticazione md5 ma la linea host
è stato fissato a ident
che ho cambiato a md5
Come altri hanno già sottolineato qui, nota che l'utilizzo di trust
è un metodo non sicuro, quindi non dovreste utilizzare in qualsiasi distribuzione di produzione in stile.