Je veux créer un utilisateur qui n'a accès qu'à une base de données spécifiée. Cependant, il devrait avoir toutes les autorisations. J'utilise Postgresql 9.5 sur Ubuntu 14.04. Alors tout d'abord, je crée un nouvel utilisateur:
$createuser --interactive joe
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Ensuite, je crée une nouvelle base de données avec le propriétaire joe:
$Sudo -u postgres psql
$CREATE DATABASE myDB OWNER joe;
$GRANT ALL ON DATABASE myDB TO joe;
Après cela, j'essaie de me connecter avec l'utilisateur joe pour me connecter sur ma base de données myDB:
$psql myDB -U joe
psql: FATAL: Peer authentication failed for user "joe"
Qu'est-ce que je dois faire ensuite?
Ouvrez /etc/postgresql/9.5/main/pg_hba.conf
avec un accès root
Sudo nano /etc/postgresql/9.5/main/pg_hba.conf
Remplacez peer
par md5
dans ces lignes.
Avant de changer
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
Host all all 127.0.0.1/32 peer
# IPv6 local connections:
Host all all ::1/128 peer
Après votre changement
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
Host all all 127.0.0.1/32 md5
# IPv6 local connections:
Host all all ::1/128 md5
Enregistrez le fichier en appuyant sur Ctrl-O. Sortie nano avec Ctrl-X
Redémarrez postgresql en utilisant
Sudo service postgresql restart