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 ...

È stato utile?

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:

  1. Aprire il file di pg_hba.conf in un editor di testo di vostra scelta. (Si trova in / etc / postgresql // principale)

  2. 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)

  1. Salva il file pg_hba.conf e uscire dall'editor di testo.

  2. Riavviare il server PostgreSQL eseguendo il comando:

    servizio PostgreSQL restart

  3. Ora cercare di avviare un server psql eseguendo:

    psql -d -U (o "psql" per brevità)

  4. 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:

entrare descrizione dell'immagine qui

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top