Messaggio di errore Postgres: FATAL: autenticazione Ident non riuscita per l'utente "..."


Risposte:


36

Significa che Postgres sta provando ad autenticare un utente usando il protocollo Ident e non può farlo. Ident auth funziona in questo modo:

  • Hai il ruolo di database 'pippo' nel database 'db'
  • Il pg_hba.conffile (in /etc/postgres-something/main) definisce "Ident" come protocollo per connettersi al database dbper gli utenti che si connettono da determinati host
  • Il nome utente unix che effettua la connessione è 'pippo'
  • Un server Ident in esecuzione sul computer da cui l'utente si sta connettendo conferma che il loro nome utente è davvero "pippo"

Possibili cause e soluzioni:

  1. Non esiste alcun server Ident in esecuzione sul computer da cui si sta tentando di connettersi. Provalo provando a connetterti alla porta 113. Se fallisce, installa un server Ident (es sudo apt-get install oidentd.).
  2. Esiste un server Ident, ma non esiste alcun ruolo di database che corrisponda al nome con cui si sta tentando di connettersi ("pippo" nell'esempio sopra). Quindi crealo collegandoti in qualche modo al database con i diritti di superutente e fai CREATE ROLE foo. In alternativa, aggiungi una voce a /etc/postgresql/.../main/pg_ident.conf.
  3. Forse il nome utente della shell non corrisponde al ruolo del database. Si può essere in grado di testare questo connettendosi al server Ident mentre una connessione è in corso, e passando i numeri di porta di destra.
  4. Forse in realtà vuoi connetterti con una password , non con Ident. Modifica il pg_hba.conffile in modo appropriato. Ad esempio, modifica:

    host all all 127.0.0.1/32 ident
    

    a

    host all all 127.0.0.1/32 md5
    

2
Per fedora, il file è in/var/lib/psql/data
Anwar il

Suppongo che a nessuno piacerebbe rispondere perché Postgres usa "ident" come login predefinito?
icc97,

Perché ha avuto senso 20 anni fa e nulla è mai cambiato in * nix? :)
Steve Bennett il

@ icc97, nulla in questa risposta indica che "ident" è il login predefinito per Postgres; dove hai preso quell'idea? Per quanto ne so, il nome del ruolo di superutente predefinito in un cluster Postgres è "postgres".
Wildcard il

9

Non sono sicuro delle cause, ma questo mi ha risolto:

nel pg_hba.conf

cambia in questo:

ospitare tutti i 127.0.0.1/32 md5

Errore esatto: Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"


1
cambiando "ident" -> "md5" è stato per me
webwesen il

3

Su CentOS, aggiungi la seguente riga a /var/lib/pgsql/9.3/data/pg_hba.conf:

host all all 127.0.0.1/32 trust

E commentare le altre voci.

Naturalmente, questa impostazione non è sicura, ma se stai solo scherzando su una VM di sviluppo come me, probabilmente va bene ...


0

Se non l'hai già provato, rivedi il tuo file pg_hba.conf. Si chiamerà qualcosa come /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20); potresti dover usare 'find / -name pg_hba.conf' per localizzarlo.

Nella parte inferiore del file, modifica i valori "METHOD" in "trust" per i test locali (vedi i documenti di Postgres per informazioni complete). Riavviare la macchina per assicurarsi che tutto sia avviato in modo pulito e che vengano letti i nuovi parametri.

Spero che questo curerà i tuoi guai. Ha risolto i miei problemi su Fedora 20 con PostgreSQL 9.3.


Non è necessario riavviare l'intero computer quando si modificano le configurazioni PostgreSQL. Prova invece a utilizzare pg_ctl reloaddalla console o SELECT pg_reload_conf();quando esegui SQL come utente privilegiato.
benjwadams,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.