Les autres réponses ne me satisfaisaient pas complètement. Voici ce qui a fonctionné pour postgresql-9.1 sur Xubuntu 12.04.1 LTS.
-
Connectez-vous à la base de données par défaut avec l'utilisateur postgres :
sudo -u postgres modèle psql1
-
Définissez le mot de passe pour l'utilisateur postgres, puis quittez psql (Ctrl-D) :
ALTER USER postgres avec le mot de passe crypté 'xxxxxxx' ;
-
Modifiez le
pg_hba.conf
fichier :sudo vim /etc/postgresql/9.1/main/pg_hba.conf
et changez "peer" en "md5" sur la ligne concernant postgres :
local tous postgres
pairmd5Pour savoir quelle version de postgresql vous utilisez, recherchez le dossier de version sous
/etc/postgresql
. Vous pouvez également utiliser Nano ou un autre éditeur au lieu de VIM. -
Redémarrez la base de données :
sudo /etc/init.d/postgresql redémarrage
(Ici, vous pouvez vérifier si cela a fonctionné avec
psql -U postgres
). -
Créez un utilisateur ayant le même nom que vous (pour le trouver, vous pouvez taper
whoami
):sudo createuser -U postgres -d -e -E -l -P -r -s
<my_name>
Les options indiquent à postgresql de créer un utilisateur qui peut se connecter, créer des bases de données, créer de nouveaux rôles, est un superutilisateur et aura un mot de passe crypté. Les plus importants sont -P -E, pour qu'on vous demande de taper le mot de passe qui sera crypté, et -d pour que vous puissiez faire un
createdb
.Méfiez-vous des mots de passe :il vous demandera d'abord deux fois le nouveau mot de passe (pour le nouvel utilisateur), répété, puis une fois le mot de passe postgres (celui spécifié à l'étape 2).
-
Encore une fois, modifiez le
pg_hba.conf
(voir étape 3 ci-dessus), et remplacez "peer" par "md5" sur la ligne concernant "tous" les autres utilisateurs :local tous tous
pairmd5 -
Redémarrez (comme à l'étape 4), et vérifiez que vous pouvez vous connecter sans -U postgres :
modèle psql1
Notez que si vous faites un simple
psql
, il échouera car il essaiera de vous connecter à une base de données par défaut portant le même nom que vous (c'est-à-direwhoami
). template1 est la base de données d'administration qui est ici depuis le début. -
Maintenant
createdb <dbname>
devrait fonctionner.