Ho appena installato Postgres 8.4 su Ubuntu 9.10 e non mi ha mai chiesto di creare un superutente. Esiste un superutente predefinito e la sua password? In caso contrario, come posso crearne uno nuovo?
Ho appena installato Postgres 8.4 su Ubuntu 9.10 e non mi ha mai chiesto di creare un superutente. Esiste un superutente predefinito e la sua password? In caso contrario, come posso crearne uno nuovo?
Risposte:
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:
Eseguendo il comando "psql" come un utente UNIX (cosiddetto IDENT / autenticazione peer), ad esempio: sudo -u postgres psql
. Si noti che sudo -u
NON sblocca l'utente UNIX.
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.
/etc/shadow
è dove viene conservata la password @lzap.
Immettere dalla riga di comando:
$ sudo -u postgres psql postgres
postgres=# \password postgres
Vedrai:
Enter new password:
Enter it again:
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;
su
l'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.
sudo
invece di su
.
sudo su - postgres
: \
sudo -u postgres
.
In Windows, procedi come segue (IMPORTANTE: utilizza un account amministratore di Windows ):
Dopo l'installazione, aprire <PostgreSQL PATH>\data\pg_hba.conf
.
Modifica queste due righe e cambia "md5" in "trust":
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Riavvia il servizio PostgreSQL (potrebbe non essere necessario).
(Facoltativo) Aprire un prompt dei comandi e modificare la tabella codici in 1252:
cmd.exe /c chcp 1252
Accedi a PostgreSQL. Non sarà necessaria la password (notare il parametro maiuscolo -U):
psql -U postgres
(Opzionale, consigliato per motivi di sicurezza) Modifica la postgres
password dell'utente:
\password postgres
e cambia "trust" di nuovo in "md5" in pg_hba.conf
.
Se stai provando ad accedere alla shell PostgreSQL, puoi digitare:
psql -U postgres my_database
Dov'è my_database
il nome del tuo database.