Postgresql: autenticazione password non riuscita per l'utente "postgres"


431

Ho installato PostgreSQL 8.4, client Postgres e Pgadmin 3. L'autenticazione non è riuscita per l'utente "postgres" sia per il client console che per Pgadmin. Ho digitato l'utente come "postgres" e la password "postgres", perché prima funzionava. Ma ora l'autenticazione non è riuscita. L'ho fatto un paio di volte senza questo problema. Cosa dovrei fare? E cosa succede?

psql -U postgres -h localhost -W
Password for user postgres: 
psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"

1
Nel mio caso la connessione non riesce perché la password è troppo complessa ...
JJD

3
Assicurati di leggere fino in fondo in questa pagina. Ho dovuto fare diverse cose per farlo funzionare. Innanzitutto, il ALTERpassaggio , quindi modifica il mio pg_hba.conffile , quindi riavvia Postgres .
elrobis,


Assicurati anche di non avere due istanze Postgres in esecuzione: una su Windows, una su Docker. Docker non mi ha riferito che la porta era già stata presa. Quindi, lo strumento si è collegato alla macchina Postgres di Windows, mentre nei caricatori Docker, tutto andava bene.
koppor,

Risposte:


750

Se ricordo correttamente, l'utente postgresnon ha la password DB impostata su Ubuntu per impostazione predefinita. Ciò significa che è possibile accedere a tale account solo utilizzando l' postgres utente del sistema operativo account .

Supponendo che tu abbia rootaccesso sulla scatola puoi fare:

sudo -u postgres psql

Se ciò fallisce con un database "postgres" does not existserrore, molto probabilmente non sei su un server Ubuntu o Debian :-) In questo caso aggiungi semplicemente template1al comando:

sudo -u postgres psql template1

Se qualcuno di questi comandi fallisce con un errore, psql: FATAL: password authentication failed for user "postgres"controlla il file /etc/postgresql/8.4/main/pg_hba.conf: deve esserci una riga come questa come prima riga senza commenti:

local   all         postgres                          ident

Per le versioni più recenti di PostgreSQL identpotrebbe effettivamente essere peer. Anche questo va bene.

All'interno della psqlshell puoi dare all'utente DB postgres una password :

ALTER USER postgres PASSWORD 'newPassword';

Puoi lasciare il psql shell digitando CtrlDo con il comando \q.

Ora dovresti essere in grado di fornire a pgAdmin una password valida per il superutente DB e anche questo sarà contento. :-)


Va meglio, grazie! psql è funziona. Ma ho ancora problemi con pgadmin3: mi viene chiesta una password per il mio utente root di sistema. (strano per me) pg_hba.conf proprio come dici tu.
I159,

Aggiungerei per uscire dalla console usando '\ q'. Mi ci è
voluto

2
Nota che pg_hba.conf deve avere l'utente postgres impostato identaffinché i primi passi funzionino. Se lo hai già impostato su md5 o qualcos'altro, non sarai in grado di accedere automaticamente.
Cerin,

80
Molto bello. Per gli altri nuovi utenti, NON DIMENTICARE IL SEMICOLON alla fine della linea ALTER USER.
itsols

3
@itsols Hai detto: "Molto bello. Ad altri nuovi utenti, NON DIMENTICARE IL SEMICOLON alla fine della linea ALTER USER" ... Hai appena terminato un calvario di quattro ore !! Mi sento davvero stupido e grato in questo momento. :-D
frozenjim

148

La risposta del personale è corretta, ma se si desidera automatizzare ulteriormente è possibile:

$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

Fatto! Hai salvato Utente = postgres e password = postgres.

Se non si dispone di una password per l'utente postgres ubuntu fare:

$ sudo passwd postgres


Fai attenzione se la tua password contiene caratteri interessanti come '!'
Brian Peterson,

45

Questo è stato frustrante, la maggior parte delle risposte di cui sopra sono corrette ma non menzionano la necessità di riavviare il servizio di database necessità prima che le modifiche nel file pg_hba.conf effetto.

quindi se apporti le modifiche come menzionato sopra:

local all postgres ident

poi riavviare come root (su centos è qualcosa di simile al servizio postgresql-9.2 riavvio) ora dovresti essere in grado di accedere al db come l'utente postgres

$psql
psql (9.2.4)
Type "help" for help.

postgres=# 

Spero che questo aggiunga informazioni per i nuovi utenti di Postgres


26
Su Ubuntu digitare: sudo service postgresql restart
Ann Kilzer,

4
per uso RHEL7sudo systemctl restart postgresql.service
Spechal

1
Che dire di Mac?
Austin,

1
Per Mac, consulta questa domanda su SO stackoverflow.com/questions/7975556/…
Rohith Nandakumar

Grazie Miguel. Ho inserito manualmente la password e il mio pgAdmin non si è collegato al database fino a quando non riavvio il server Postgres.
Ustin,

20

Modifica il file pg_hba.conf, ad es. Con sudo emacs /etc/postgresql/9.3/main/pg_hba.conf

Cambia tutti i metodi di autenticazione in trust. Modifica password Unix per l'utente "postgres". Riavvia il server. Accedi psql -h localhost -U postgrese usa la password Unix appena impostata. Se funziona, puoi reimpostare il file pg_hba.conf sui valori predefiniti.


1
Se rimani completamente bloccato, questo è l'unico metodo garantito. Cambia tutti i metodi in trust, riavvia db, quindi come root sudo su - postgres:, imposta / fissa / disinserisce la password successiva per postgres db (e nella shell, se necessario), quindi ripristina su secure md5o identmetodi e riavvia in modo che i valori restino validi. A proposito, su Cent / RedHat 9.4 il file si trova su:/var/lib/pgsql/9.4/data/pg_hba.conf
PapaK

17

Per coloro che lo usano per la prima volta e non hanno informazioni su quale sia la password, possono seguire i passaggi seguenti (supponendo che tu sia su Ubuntu):

  1. Apri il file pg_hba.conf in/etc/postgresql/9.x/main

     sudo vi pg_hba.conf 

    2. modifica la riga sotto

     local   all             postgres                                peer

    per

     local   all             postgres                                trust
  2. Riavvia il server

      sudo service postgresql restart
  3. Finalmente puoi accedere senza bisogno di una password, come mostrato in figuraFinalmente puoi accedere senza bisogno di una password, come mostrato in figura

Rif. Qui per maggiori informazioni


12

Se stai provando ad accedere alla shell postgres come utente postgres, puoi usare i seguenti comandi.

passa all'utente postgres

# su - postgres

accedi a psql

# psql

spero che aiuti


3
su - postgreschiede una password su posgresql 9.5 su Ubuntu 16.04
Prashanth Chandra

3
su - postgresè il comando suggerito dalla documentazione ufficiale di fedora , ma anch'io ricevo una richiesta di password. Per ovviare che ho seguito questa e-mail postgres forum che utilizza lo stesso comando come la risposta accettata qui: sudo -u postgres psql. Non dimenticare di avviare e avviare il server di database.
icc97,

11

Cerca di non usare il parametro -W e lascia vuota la password. A volte l'utente viene creato senza password.

Se il problema persiste, reimpostare la password. Esistono diversi modi per farlo, ma funziona su molti sistemi:

$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres with password 'YourNewPassword';

7

Come regola generale: NON DOVREI MAI MAI IMPOSTARE UNA PASSWORD PER L'UTENTE POSTGRES .

Se hai bisogno di un accesso superutente da pgAdmin, crea un altro superutente. In questo modo, se le credenziali per quel superutente sono compromesse, puoi sempre ssh nell'effettivo host del database ed eliminare manualmente il superutente usando

sudo -u postgres -c "DROP ROLE superuser;"

1
Qual è il motivo di questa regola empirica?
Gershom,

2
In modo che tu non possa mai avere tutti i tuoi superuser compromessi.
ardilgulez,

1
In che modo l'impostazione di una password per Postgres può compromettere tutti i superutente?
Gershom,

4
l'impostazione della password non comporta la compromissione di tutti i superutente, ma la mancata impostazione della password garantisce che non vengano mai compromessi tutti i superutente. il motivo è: quando non si imposta la password, qualsiasi tentativo di accesso con password all'utente postgres verrà negato mentre è ancora possibile utilizzarlo da soli in modo fidato.
ardilgulez,

7

Una volta che sei nella shell di Postgres, inserisci questo comando

postgres=# \password postgres

Dopo aver inserito questo comando ti verrà chiesto di impostare la password, basta impostare la password e quindi provare.


3

Quando installi postgresql non viene impostata alcuna password per postgres utente, devi impostarla esplicitamente su Unix usando il comando:

sudo passwd postgres

Ti chiederà la tua password sudo e poi ti invierà la nuova password utente di postgres. fonte



0

Ecco alcune combinazioni a cui ho provato ad accedere:

# login via user foo
psql -Ufoo -h localhost

sudo -u postgres psql postgres

# user foo login to postgres db
psql -Ufoo -h localhost -d postgres

0

ho avuto un problema simile. Ubuntu mi ha lasciato accedere nella console con qualsiasi password per superutente. Tranne quando mi sono connesso con -h localhost nel comando di linea psql.

Ho anche osservato che "localhost: 8080 / MyJSPSiteLogIn" - mostrava: irreversibile: errore di autenticazione con l'utente "utente".

pg_hba.conf era ok.

Ho notato che due versioni di Postgres funzionavano nello stesso servizio.

Risolto - disinstallazione della versione inutile.


0

Avevo affrontato un problema simile. Mentre accedevo a qualsiasi database stavo ricevendo il prompt seguente dopo l'aggiornamento della password "autenticazione password non riuscita per l'utente" postgres "" in PGAdmin


Soluzione:

  1. Chiudere il server Postgres
  2. Rieseguire pgadmin
  3. pgadmin chiederà la password.
  4. Inserisci la password corrente dell'utente menzionato

Spero che risolverà il tuo problema

inserisci qui la descrizione dell'immagine


-1

Spero che questo ti possa aiutare in breve tempo. Puoi cambiare la password di postgres sql usando il comando muggito.

Comando

sudo -u postgres psql

E poi puoi aggiornare la password

Comando

Modifica la password postgres dell'utente 'YOUR_NEW_PASSWORD';


1
La tua risposta contiene solo le informazioni, che è già stato aggiunto: stackoverflow.com/a/7696398/8283469
L. Guthardt
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.