Die Peer-Authentifizierung ist für Benutzer mit allen Berechtigungen in Postgres 9.5 fehlgeschlagen

13

Ich möchte einen Benutzer erstellen, der nur Zugriff auf eine bestimmte Datenbank hat. Es sollte jedoch alle Erlaubnis haben. Ich benutze Postgresql 9.5 unter Ubuntu 14.04. Als erstes erstelle ich einen neuen Benutzer:

$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

Als nächstes erstelle ich eine neue Datenbank mit Besitzer Joe:

 $sudo -u postgres psql 
 $CREATE DATABASE myDB OWNER joe;
 $GRANT ALL ON DATABASE myDB TO joe;

Danach versuche ich mich mit dem Benutzer joe zu verbinden, um eine Verbindung zu meiner Datenbank myDB herzustellen:

$psql myDB -U joe
psql: FATAL:  Peer authentication failed for user "joe" 

Was muss ich als nächstes tun?

Qeychon
quelle
4
Dies ist kein Off-Topic. weil das Einrichten von Software in Ubuntu ein
Anwar
Ist dein Problem gelöst?
Anwar

Antworten:

15
  1. Öffnen Sie /etc/postgresql/9.5/main/pg_hba.confmit Root-Zugriff

     sudo nano /etc/postgresql/9.5/main/pg_hba.conf
    
  2. Ändern Sie peerzu md5in diesen Zeilen.

    Vor dem Umsteigen

    # "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
    

    Nach deinem Wechsel

    # "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. Speichern Sie die Datei mit Ctrl- O. Verlasse nano mit Ctrl-X

  4. Starten Sie postgresql mit neu

    sudo service postgresql restart
    
Anwar
quelle
1
danke, ich musste die Zeile local peer auf md5 ändern, danach konnte ich mich erfolgreich einloggen.
Qeychon
Aktualisierung für jede Version :, um die Conf-Datei zu überprüfen:sudo -u postgres psql -c "SHOW config_file"
Peter Krauss
Meine zeigten Identität anstelle von Gleichaltrigen host all all 127.0.0.1/32 ident,host all all ::1/128 ident
Joseph K.