Qual è il nome utente / password del superutente predefinito per postgres dopo una nuova installazione?


Risposte:


534

ATTENZIONE La risposta sulla modifica della password UNIX per "postgres" in "$ sudo passwd postgres" non è preferita e può anche essere PERICOLOSA !

Ecco perché: per impostazione predefinita, l'account UNIX "postgres" è bloccato, il che significa che non è possibile accedere utilizzando una password. Se si utilizza "sudo passwd postgres", l'account viene immediatamente sbloccato. Peggio ancora, se imposti la password su qualcosa di debole, come "Postgres", sei esposto a un grande pericolo per la sicurezza. Ad esempio, ci sono un certo numero di robot là fuori che provano la combinazione nome utente / password "postgres / postgres" per accedere al sistema UNIX.

Quello che dovresti fare è seguire la risposta di Chris James :

sudo -u postgres psql postgres

# \password postgres

Enter new password: 

Per spiegarlo un po '. Di solito ci sono due modi predefiniti per accedere al server PostgreSQL:

  1. Eseguendo il comando "psql" come un utente UNIX (cosiddetto IDENT / autenticazione peer), ad esempio: sudo -u postgres psql. Si noti che sudo -uNON sblocca l'utente UNIX.

  2. tramite connessione TCP / IP utilizzando il nome utente / password gestiti PostgreSQL (la cosiddetta autenticazione TCP) (ovvero, NON la password UNIX).

Quindi non vuoi mai impostare la password per l'account UNIX "postgres". Lascialo bloccato per impostazione predefinita.

Naturalmente le cose possono cambiare se la configuri diversamente dall'impostazione predefinita. Ad esempio, si potrebbe sincronizzare la password PostgreSQL con la password UNIX e consentire solo accessi locali. Ciò andrebbe oltre lo scopo di questa domanda.


11
quindi, come si fa a bloccare nuovamente Postgres utente?
ultrajohn

3
@ultrajohn - dipende dalla distribuzione che usi, ma puoi modificare / etc / passwd e inserire * invece della password
lzap

3
/etc/shadowè dove viene conservata la password @lzap.
Gringo Suave,

2
Bene, puoi impostare / sbin / nologin in / etc / passwd o mettere * invece della password in / etc / shadow.
lzap,

34
passwd --lock postgres
Stéphane

166

Immettere dalla riga di comando:

$ sudo -u postgres psql postgres
postgres=# \password postgres

Vedrai:

Enter new password: 
Enter it again:

7
Questo è ciò che è necessario per utilizzare uno strumento come pgadminIII (durante l'impostazione di un profilo del server) immediatamente dopo l'installazione di Postgres stesso. Grazie!
limist

64

Manipoli Postgres attraverso l'utente postgres, così:

# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;

5
@ThierryLam Devi essere root per sul'utente postgres senza inserire una password. Sulla maggior parte dei sistemi l'account Postgres Unix è bloccato (nessuna password funzionerà), il che significa che solo l'su account root può accedere a quell'account.
voretaq7,

2
Usa sudoinvece di su.
reinierpost,

8
Ho dovuto correre sudo su - postgres: \
Jim Schubert l'

3
@Jim Schubert: puoi anche correre sudo -u postgres.
reinierpost,

1
sudo -u postgres psql - funziona anche in modo da poterlo fare in un solo passaggio.
Ominus,

21

In Windows, procedi come segue (IMPORTANTE: utilizza un account amministratore di Windows ):

  1. Dopo l'installazione, aprire <PostgreSQL PATH>\data\pg_hba.conf.

  2. Modifica queste due righe e cambia "md5" in "trust":

    host all all 127.0.0.1/32 md5

    host all all ::1/128 md5

  3. Riavvia il servizio PostgreSQL (potrebbe non essere necessario).

  4. (Facoltativo) Aprire un prompt dei comandi e modificare la tabella codici in 1252:

    cmd.exe /c chcp 1252

  5. Accedi a PostgreSQL. Non sarà necessaria la password (notare il parametro maiuscolo -U):

    psql -U postgres

  6. (Opzionale, consigliato per motivi di sicurezza) Modifica la postgrespassword dell'utente:

    \password postgres

    e cambia "trust" di nuovo in "md5" in pg_hba.conf.


5

Se stai provando ad accedere alla shell PostgreSQL, puoi digitare:

psql -U postgres my_database

Dov'è my_databaseil nome del tuo database.

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.