it-swarm.com.de

Wie konfiguriert man postgresql so, dass es login + password auth akzeptiert?

Ich habe eine neue Ubuntu 10.10-Installation mit allen Updates und Postgresql 8.4
Damit postgresql Login- und Passwortverbindungen akzeptieren kann, habe ich es über Folgendes konfiguriert:

Sudo su postgres
psql
ALTER USER postgres WITH PASSWORD 'password';
CREATE DATABASE myapp;
\q
exit
Sudo vi /etc/postgresql/8.4/main/pg_hba.conf
change "local all all indent" to "local all all trust"

Aber überraschenderweise funktioniert das nicht! Der Befehl

psql -U postgres password

Bewertet mit Fehler:

psql: FATAL:  Ident authentication failed for user "postgres"

Gibt es irgendwelche Hinweise, wie ich den psql -U zum Laufen bringen kann?

30
grigoryvp

Es ist wahrscheinlich eine gute Idee, den Benutzer "postgres" mit der Ident-Authentifizierung zu belassen. Standardmäßig glaube ich, dass Ubuntu den Benutzer "postgres" für Upgrades, Backups usw. verwendet. Dies erfordert, dass es sich ohne ein angegebenes Kennwort anmelden kann.

Ich empfehle, einen anderen Benutzer anzulegen (wahrscheinlich mit Ihrem eigenen Benutzernamen) und ihm auch Administratorrechte zu geben. Dann können Sie diesen Benutzer mit Kennwörtern für lokale Verbindungen verwenden.

So sehen die relevanten Teile meiner pg_hba.conf aus:

# allow postgres user to use "ident" authentication on Unix sockets
# (as per recent comments, omit "sameuser" if on postgres 8.4 or later)
local   all   postgres                         ident sameuser
# allow all other users to use "md5" authentication on Unix sockets
local   all   all                              md5
# for users connected via local IPv4 or IPv6 connections, always require md5
Host    all   all        127.0.0.1/32          md5
Host    all   all        ::1/128               md5

Beachten Sie auch, dass psql -U postgres password nicht das tut, was Sie möchten. Das Passwort sollte niemals in der Kommandozeile angegeben werden. Das wird versuchen, sich als Benutzer "postgres" bei einer Datenbank namens "password" anzumelden.

Sie sollten stattdessen psql -U postgres myapp verwenden. Postgres fordert Sie automatisch zur Eingabe eines Kennworts auf, wenn dieses ordnungsgemäß konfiguriert wurde.

Wenn wir möchten, dass das Passwort automatisch ausgefüllt wird, in $ HOME/.pgpass-Datei ablegen

41
cecilkorik

Ich denke, Ihre pg_ident.conf-Datei ist falsch konfiguriert. Hast du es auch versucht?

psql -U postgres -W
2
Max

Eine andere Sache, die dazu führen kann, sind abgelaufene Anmeldeinformationen. Ich glaube nicht, dass dies in Version 8 passiert ist, aber in Version 9 wird beim Erstellen einer neuen Rolle in pgadmin ein abgelaufener Status erstellt. Sie müssen das Ablaufdatum der Rolle ändern oder löschen, bevor Sie sich anmelden können es.

0
elc