Ho dimenticato la password che ho inserito durante l'installazione di Postgres


205

Ho dimenticato o digitato male (durante l'installazione) la password per l'utente predefinito di Postgres. Non riesco a eseguirlo e visualizzo il seguente errore:

psql: FATAL:  password authentication failed for user "hisham"
hisham-agil: hisham$ psql 

Esiste un modo per reimpostare la password o come posso creare un nuovo utente con privilegi di superutente?

Sono nuovo di Postgres e l'ho appena installato per la prima volta. Sto cercando di usarlo con Rails e sto eseguendo Mac OS X Lion.


1
Non posso ancora commentare le risposte, quindi devo farlo in questo modo. Ho fatto quello che ha detto SaiyanGirl, tuttavia avevo ancora bisogno di inserire una password, che era 'postgres' per accedere, quindi ho potuto resettare la password
Pascale,

Risposte:


359
  1. trova il file pg_hba.conf- potrebbe trovarsi, ad esempio in /etc/postgresql-9.1/pg_hba.conf.

    cd /etc/postgresql-9.1/

  2. Eseguire il backup

    cp pg_hba.conf pg_hba.conf-backup

  3. posizionare la seguente riga (come prima riga non commentata o come unica):

Per tutte le occorrenze di seguito (locale e host), esegui la sezione di replica se non ne hai, deve essere modificato come segue, non dovrebbe essere presente alcuna autenticazione MD5 o Peer.

local  all   all   trust
  1. riavvia il tuo server PostgreSQL (ad es. su Linux :)

    sudo /etc/init.d/postgresql restart

    Se il servizio (daemon) non avvia la segnalazione nel file di registro:

    le connessioni locali non sono supportate da questa build

    dovresti cambiare

    local all all trust

    per

    host all all 127.0.0.1/32 trust

  2. ora puoi connetterti come qualsiasi utente. Connetti come superutente postgres(nota, il nome del superutente potrebbe essere diverso nella tua installazione. In alcuni sistemi viene chiamato pgsql, ad esempio. )

    psql -U postgres

    o

    psql -h 127.0.0.1 -U postgres

    (nota che con il primo comando non sarai sempre connesso con l'host locale)

  3. Reimposta password ('sostituisci my_user_name con postgres poiché stai ripristinando l' utente postgres )

    ALTER USER my_user_name with password 'my_secure_password';

  4. Ripristina il vecchio pg_hba.confperché è molto pericoloso tenerlo in giro

    cp pg_hba.conf-backup pg_hba.conf

  5. riavviare il server, al fine di eseguire con la cassaforte pg_hba.conf

    sudo /etc/init.d/postgresql restart

Ulteriori letture su quel file pg_hba: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html


9
E poi iniziare psql? Mi viene ancora richiesta una password e non la conosco
CodyBugstein il

4
questa risposta NON ha funzionato per me, dopo aver fatto il passaggio 3, il servizio non si avvia, non lo so, forse è il sistema operativo (W8), non lo farà.
Scaramouche,

3
qualcuno per Windows?
Mahesha999,

2
Tenere presente l'ordine delle voci in pg_hba.conf è importante. Se aggiungi "local all all trust" alla fine del file, non funzionerà come previsto, poiché i record precedenti verranno confrontati per primi. Quindi mettilo nella parte superiore del file per avere quello che ti aspetti.
Tagar

6
Se sei su Windows con questo errore, continua a scorrere fino alla risposta di @SaiyanGirl. Modificate semplicemente le colonne METHOD delle voci esistenti per "fidarvi", quindi cambiatele quando avete finito
sean.hudson

99

Quando ti colleghi a postgres dalla riga di comando, non dimenticare di aggiungere -h localhost come parametro della riga di comando. In caso contrario, Postgres proverà a connettersi utilizzando la modalità di autenticazione PEER.

Di seguito viene mostrato un ripristino della password, un accesso non riuscito con autenticazione PEER e un accesso riuscito che utilizza una connessione TCP.

# sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

In mancanza di:

# psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

Lavorare con -h localhost:

# psql -U postgres -W  -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=#

7
Grazie per il suggerimento relativo all'opzione "-h", mi ha aiutato.
Bunkerbewohner

Non necessario su Windows cmd.exe
Fabien Haddadi,

1
La migliore risposta per mac
Muhammad Umar il

72

Il file pg_hba.conf( C:\Program Files\PostgreSQL\9.3\data) è cambiato da quando sono state fornite queste risposte. Quello che ha funzionato per me, in Windows, è aprire il file e cambiare il METHODda md5a trust:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

Quindi, usando pgAdmin III, ho effettuato l'accesso senza password e ho cambiato la postgres'password dell'utente andando suFile -> Change Password


Questo non funziona perché PgAdmin richiede ancora la password corrente ... Ho ripristinato "attendibile" e riavviato PgAdmin. Non è ancora possibile ripristinare senza digitare la password CORRENTE ...
gene b.

1
Una volta modificato il metodo trust, puoi seguire questo e modificare la password in cmd
Gilad Green,

12

Solo una nota, su Linux Puoi semplicemente eseguire sudo su - postgresper diventare l'utente di Postgres e da lì cambiare ciò che è necessario usando psql.


3
hai ancora bisogno della password dopo aver eseguito psql
Snow

8
  1. Modifica il file /etc/postgresql/<version>/main/pg_hba.confe trova la seguente riga:

    local   all             postgres                                md5
  2. Modifica la riga e modifica md5alla fine in truste salva il file

  3. Ricarica il servizio postgresql

    $ sudo service postgresql reload
  4. Questo caricherà i file di configurazione. Ora puoi modificare l' postgresutente accedendo alla psqlshell

    $ psql -U postgres
  5. Aggiorna la postgrespassword dell'utente

    alter user postgres with password 'secure-passwd-here';
  6. Modifica il file /etc/postgresql/<version>/main/pg_hba.confe trusttorna a md5e salva il file

  7. Ricarica il servizio postgresql

    $ sudo service postgresql reload
  8. Verifica che la modifica della password funzioni

    $ psql -U postgres -W

È così difficile fornire una soluzione Windows? Non tutti usano Linux con sudo. Come lo farei su Windows ??
gene b.

7

Stavo avendo questo problema su Windows 10 e il problema nel mio caso era che stavo solo correndo psql e che era predefinito tentare di accedere con il mio nome utente di Windows ("Nathan"), ma non c'era nessun utente PostgreSQL con quel nome, e non mi stava dicendo questo.

Quindi la soluzione era di eseguire psql -U postgrespiuttosto che solo psql, e quindi la password che ho inserito al momento dell'installazione ha funzionato.


5

Aggiungendo la risposta per l'utente di Windows per l'ultima versione di postgres (> 10),

Vai alla posizione di installazione di Postgres e cerca pg_hba.conf, lo troverai in..\postgres\data\pg_hba.conf

Apri quel file con il blocco note, trova questa riga,

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections: 
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
#..

Cambia il metodo da md5 a trust,

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections: 
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# ...

Ora vai su SQL Shell (PSQL) e lascia tutto vuoto,

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]: 

Questa volta non verrà richiesta la password e si accederà,

Ora esegui questa linea, ALTER USER yourusername WITH SUPERUSER

Ora puoi lasciare la shell con \ q

Ancora una volta vai al file pg_hba.conf e cambia METHOD nuovamente da trust a md5 e salvalo.

Ora accedi con il tuo nuovo utente e password e puoi controllare \ du per i suoi attributi.


1

Per l'installazione di Windows, viene creato un utente Windows. E "psql" usa questo utente per la connessione alla porta. Se cambi la password dell'utente PostgreSQL, non cambierà quella di Windows. Il juste della riga di comando seguente funziona solo se si ha accesso alla riga di comando.

Invece è possibile utilizzare l'applicazione GUI di Windows "c: \ Windows \ system32 \ lusrmgr.exe". Questa app gestisce gli utenti creati da Windows. Quindi ora puoi modificare la password.


1

Quello che ho fatto per risolvere lo stesso problema è stato:

Apri il file pg_hba.conf con l'editor gedit dal terminale:

sudo gedit /etc/postgresql/9.5/main/pg_hba.conf

Chiederà la password. Inserisci la password di accesso dell'amministratore. Questo aprirà gedit con il file. Incolla la seguente riga:

host  all   all  127.0.0.1/32  trust

appena sotto -

# Database administrative login by Unix domain socket

Salvalo e chiudilo. Chiudi il terminale e riaprilo ed esegui questo comando:

psql -U postgres

Ora accederai alla console psql. Ora cambia la password inserendo questo:

ALTER USER [your prefered user name] with password '[desired password]';

Se dice che l'utente non esiste, invece di ALTERusarloCREATE .

Infine, rimuovi quella determinata riga incollata in pg_hba e salvala.


0

Se sei in Windows, puoi semplicemente eseguire

net user postgres postgres

e accedi a postgres con postgres / postgres come utente / password


0

Il file .pgpass nella home directory di un utente o il file a cui fa riferimento PGPASSFILE può contenere password da utilizzare se la connessione richiede una password (e nessuna password è stata specificata diversamente). Su Microsoft Windows il file è denominato% APPDATA% \ postgresql \ pgpass.conf (dove% APPDATA% si riferisce alla sottodirectory Dati applicazioni nel profilo dell'utente).

Questo file dovrebbe contenere righe del seguente formato:

hostname: port: database: username: password

(Puoi aggiungere un commento di promemoria al file copiando la riga sopra e precedendola con #.) Ciascuno dei primi quattro campi può essere un valore letterale, o *, che corrisponde a qualsiasi cosa. Verrà utilizzato il campo password della prima riga che corrisponde ai parametri di connessione correnti. (Pertanto, inserire prima le voci più specifiche quando si utilizzano i caratteri jolly.) Se una voce deve contenere: o \, sfuggire a questo carattere con. Un nome host di localhost corrisponde a connessioni TCP (nome host localhost) e socket socket di dominio Unix (pghost vuoto o directory socket predefinita) provenienti dal computer locale. In un server di standby, un nome di database della replica corrisponde alle connessioni di replica in streaming effettuate al server principale. Il campo del database è di utilità limitata poiché gli utenti hanno la stessa password per tutti i database nello stesso cluster.

Sui sistemi Unix, le autorizzazioni su .pgpass devono impedire qualsiasi accesso al mondo o al gruppo; raggiungere questo obiettivo con il comando chmod 0600 ~ / .pgpass. Se i permessi sono meno severi di questo, il file verrà ignorato. Su Microsoft Windows, si presume che il file sia archiviato in una directory sicura, quindi non viene effettuato alcun controllo delle autorizzazioni speciali.


Questo ha funzionato per me, dove il percorso si è espanso in C: \ Users \ <utente> \ AppData \ Roaming \ postgresql \ pgpass.conf. Anche spegnere e riaccendere il server PostgreSQL sembrava aiutare.
geodata

0

Se stai eseguendo postgresql su mac os, prova questi :

  1. Modifica il file pg_hba.conf

  2. sudo vi /Library/PostgreSQL/9.2/data/pg_hba.conf

  3. Modificare il metodo "md5" affinché tutti gli utenti si "fidino" nella parte inferiore del file

  4. Trova il nome del servizio

  5. ls / Library / LaunchDaemons

  6. Cerca postgresql

  7. Interrompere il servizio postgresql

  8. sudo launchctl stop com.edb.launchd.postgresql-9.2

  9. Avviare il servizio postgresql

  10. sudo launchctl start com.edb.launchd.postgresql-9.2

  11. Inizia la sessione psql come postgres

  12. psql -U postgres

  13. (non dovrebbe chiedere la password a causa dell'impostazione 'trust')

  14. Reimposta la password nella sessione psql digitando

  15. ALTER USER postgres con password 'secure-new-password';

  16. \ q
  17. accedere

  18. Modifica il file pg_hba.conf

  19. Passa a 'md5'

  20. Riavvia nuovamente i servizi


-1

Questo è ciò che ha funzionato per me su Windows:

Modifica il file pg_hba.conf che si trova in C: \ Programmi \ PostgreSQL \ 9.3 \ data.

# IPv4 local connections: host all all 127.0.0.1/32 trust

Cambia il metodo da trust a md5 e riavvia il servizio postgres su Windows.

Dopodiché, puoi accedere usando l'utente postgres senza password usando pgadmin. Puoi cambiare la password usando File-> Cambia password.

Se l'utente postgres non dispone dei privilegi di superutente, non è possibile modificare la password. In questo caso, accedi con un altro utente (pgsql) con accesso da superutente e fornisci i privilegi ad altri utenti facendo clic con il tasto destro del mouse sugli utenti e selezionando proprietà-> Privilegi ruolo.

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.