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
fichier (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.
Sous Linux, PostgresQL est généralement configuré pour permettre à l'utilisateur root de se connecter en tant que superutilisateur postgres postgres
depuis le shell (console ou ssh).
$ psql -U postgres
Ensuite, vous créerez simplement une nouvelle base de données comme d'habitude :
CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;
Cela devrait fonctionner sans toucher à pg_hba.conf
. Si vous voulez pouvoir le faire en utilisant un outil graphique sur le réseau, vous devrez alors jouer avec pg_hba.conf
.
Il existe deux méthodes que vous pouvez utiliser. Les deux nécessitent la création d'un utilisateur et une base de données.
-
Utilisation de createuser et createdb ,
$ sudo -u postgres createuser --superuser $USER $ createdb mydatabase $ psql -d mydatabase
-
Utilisation des commandes d'administration SQL et connexion avec un mot de passe sur TCP
$ sudo -u postgres psql postgres
Et puis dans le shell psql
CREATE ROLE myuser LOGIN PASSWORD 'mypass'; CREATE DATABASE mydatabase WITH OWNER = myuser;
Ensuite, vous pouvez vous connecter,
$ psql -h localhost -d mydatabase -U myuser -p <port>
Si vous ne connaissez pas le port, vous pouvez toujours l'obtenir en exécutant ce qui suit, comme le
postgres
utilisateur,SHOW port;
Ou,
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
Note complémentaire :le postgres
utilisateur
Je suggère PAS modifier le postgres
utilisateur.
- Il est normalement verrouillé depuis le système d'exploitation. Personne n'est censé "se connecter" au système d'exploitation en tant que
postgres
. Vous êtes censé avoir root pour vous authentifier en tant quepostgres
. - Il n'est normalement pas protégé par un mot de passe et délègue au système d'exploitation hôte. C'est une bonne chose . Cela signifie normalement pour se connecter en tant que
postgres
qui est l'équivalent PostgreSQL duSA
de SQL Server , vous devez disposer d'un accès en écriture aux fichiers de données sous-jacents. Et cela signifie que vous pourriez normalement faire des ravages de toute façon. - En gardant cette option désactivée, vous supprimez le risque d'une attaque par force brute via un super-utilisateur nommé. Masquer et masquer le nom du superutilisateur présente des avantages.