L'authentification par les pairs a échoué pour l'utilisateur avec tous les privilèges dans Postgres 9.5

14

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" 

Que dois-je faire ensuite?

Qeychon
la source
4
Ce n'est pas hors sujet. parce que la configuration d'un logiciel dans Ubuntu est sur le sujet
Anwar
Votre problème est-il résolu?
Anwar

Réponses:

16
  1. Ouvrir /etc/postgresql/9.5/main/pg_hba.confavec un accès root

     sudo nano /etc/postgresql/9.5/main/pg_hba.conf
    
  2. Passez peerà md5dans 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
    
  3. Enregistrez le fichier en appuyant sur Ctrl- O. Quittez nano avec Ctrl-X

  4. Redémarrez postgresql en utilisant

    sudo service postgresql restart
    
Anwar
la source
1
merci, j'ai dû changer la ligne d'homologue local en md5, après quoi j'ai pu me connecter avec succès.
Qeychon
Mise à jour pour n'importe quelle version :, pour vérifier le fichier de conf:sudo -u postgres psql -c "SHOW config_file"
Peter Krauss
Les miens étaient montrant ident au lieu de pairs, host all all 127.0.0.1/32 ident,host all all ::1/128 ident
Joseph K.