Ich möchte einen Benutzer anlegen, der nur auf eine bestimmte Datenbank zugreifen kann. Er sollte jedoch alle Berechtigungen haben. Ich verwende Postgresql 9.5 unter Ubuntu 14.04. Also erstelle ich zunächst 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 dem Eigentümer Joe:
$sudo -u postgres psql
$CREATE DATABASE myDB OWNER joe;
$GRANT ALL ON DATABASE myDB TO joe;
Danach versuche ich, mit dem Benutzer joe 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?
Antwort1
/etc/postgresql/9.5/main/pg_hba.conf
Mit Root-Zugriff öffnensudo nano /etc/postgresql/9.5/main/pg_hba.conf
Ändern Sie in diesen Zeilen in „
peer
zumd5
“.Vor dem Ändern
# "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 Ihrer Änderung
# "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
Speichern Sie die Datei mit Ctrl- O. Beenden Sie nano mit Ctrl-X
Starten Sie postgresql neu mit
sudo service postgresql restart