Le altre risposte non sono state completamente soddisfacenti per me. Ecco cosa ha funzionato per postgresql-9.1 su Xubuntu 12.04.1 LTS.
-
Connettiti al database predefinito con l'utente postgres:
sudo -u postgres psql template1
-
Imposta la password per l'utente postgres, quindi esci da psql (Ctrl-D):
ALTER USER postgres con password crittografata 'xxxxxxx';
-
Modifica il
pg_hba.conf
file:sudo vim /etc/postgresql/9.1/main/pg_hba.conf
e cambia "peer" in "md5" nella riga relativa a postgres:
locale tutti postgres
parimd5Per sapere quale versione di postgresql stai utilizzando, cerca la cartella della versione in
/etc/postgresql
. Inoltre, puoi utilizzare Nano o un altro editor invece di VIM. -
Riavvia il database :
sudo /etc/init.d/postgresql restart
(Qui puoi verificare se ha funzionato con
psql -U postgres
). -
Crea un utente con il tuo stesso nome (per trovarlo, puoi digitare
whoami
):sudo createuser -U postgres -d -e -E -l -P -r -s
<my_name>
Le opzioni dicono a postgresql di creare un utente che può accedere, creare database, creare nuovi ruoli, è un superutente e avrà una password crittografata. Quelli veramente importanti sono -P -E, in modo che ti venga chiesto di digitare la password che verrà crittografata, e -d in modo da poter eseguire un
createdb
.Attenzione alle password :ti chiederà prima due volte la nuova password (per il nuovo utente), ripetuta, e poi una volta la password postgres (quella specificata al punto 2).
-
Di nuovo, modifica il
pg_hba.conf
file (vedi passaggio 3 sopra) e cambia "peer" in "md5" nella riga relativa a "tutti" gli altri utenti:locale tutti tutti
parimd5 -
Riavvia (come nel passaggio 4) e verifica di poter accedere senza -U postgres:
modello psql1
Nota che se esegui un semplice
psql
, fallirà poiché proverà a connetterti a un database predefinito con il tuo stesso nome (ad esempiowhoami
). template1 è il database dell'amministratore presente dall'inizio. -
Ora
createdb <dbname>
dovrebbe funzionare.