Benutzer kann sich nicht einloggen

Hallo,
ich bin Neuling auf dem Gebiet der PostgreSQL (Version 8.3.4) Datenbank.

Ich habe diese nun unter debian (mit apt-get) installiert und kann mich auch via postgres und psql auf die Datenbank einloggen.

Dort habe ich nun das Problem, dass, egal wie ich eine Rolle (Benutzer) anlege, dieser sich nicht mit der Datenbank verbinden kann.

Probiert habe ich es indem ich als postgres folgendes eingegeben habe:

psql -U postgres template1

In der Datenbank dann:

CREATE ROLE dbuser LOGIN CREATEDB PASSWORD ‘userpass’ INHERIT;

Als Antwort erscheint: CREATE ROLE

mit \du kann ich nun beide Rollen sehen: postgres und dbuser

Will ich mich aber mit “psql -U dbuser template1 -W” anmelden, dann erscheint nach der Passworteingabe:

psql: FATAL: Ident-Authnetifizierung für Benutzer “dbuser” fehlgeschlagen

Das erscheint übrigens auch, wenn ich den Benutzer ohne Passwort anlege und das -W weg lasse.

Ich habe das pg-admin Buch durchblättert und das PostgreSQL Ge-PACKT von Peter Eisentraut. Keine brauchbaren Infos…

Wie lege ich nun einen Datenbankbenutzer an, der sich tatsächlich einloggen darf?

Übrigens sind psql und Server auf einer Maschine.

Vielen Dank schon mal für alle Infos.

DER Ruebenmaster

Ok, ich bin natürlich am wuhlen und habe entdeckt, dass in der pg_hba.conf der Passworteintrag auf md5 steht. Ich habe ihn auf trust geändert und siehe da… dbuser ist drin!

Ich fühle mich nun wie Boris Becker: “Bin ich schon drin?”

Bis zur nächsten lästigen Frage… DER Ruebenmaster

PG kennt verschiedene Arten der Benutzeridentifizierung. Dies wird in pg_hba.conf gesteuert.

13:25 < akretschmer> ??pg_hba
13:25 < rtfm_please> For information about pg_hba
13:25 < rtfm_please> see http://www.postgresql.org/docs/current/static/client-authentication.html

Lese das Dir mal durch. Alles, was u tun must, ist, diese Datei Deinen Wünschen anzupassen.

Hint: derzeit ist Ident-Auth eingestellt. Hier wird geprüft, ob der aktuelle Systemuser auch der ist, der sich an der DB anmelden will. Dies schlägt fehl.
Evtl. könntest Du das vermeiden mit psql -h localhost … aber ob das geht, steht auch wieder in der pg_hba.conf.


Andreas


Andreas

Hallo,
vielen Dank für den Tipp.

Aber ich werde leider von pg_hba.conf nach CREATE USER verwiesen, dort zu CREATE ROLE um dann einen Link nach ALTER ROLE zu folgen. Aber nirgendwo steht wie ich als Passwort Verschlüsselung md5 einrichten kann. “trust” ist nicht das Gelbe vom Ei für den Ernstfall.

Wie richte ich das Passwort ein, dass in der pg_hba.conf wieder md5 eingeben kann?

Vielen Dank für alle Infos… ;o)

Gruß
DER Ruebenmaster

P.S. Übrigens funktioniert das Anmelden meines dbuser nach einem Neustart des Datenbankservers nicht mehr! Jetzt stehe ich wieder am Anfang.

Ich habe die Handbücher gelesen. Das rtfm kann man sich sparen… Die Handbücher gehen vom fehlerfreien Idealfall aus.

Jemand einen sinnvollen Tipp zum Thema md5 in diesem Fall?

Ganz ruhig. Wenn Du psql auf der lokalen Kiste nutzt, dann verbindet es sich lokal via Socket. Zumindest solange, wie man nicht extra -h localhost und vielleicht noch -p 5432 mitgibt, denn dann verbindet es sich via TCP/IP. Und für diese 2 Verbindungstypen gibt es auch unterschiedliche Einträge in der pg_hba.conf. Einmal local, und einmal host. Ich spekuliere einfach mal, daß Du das nicht beachtet hast.


Andreas

Hallo Leute,

ich habe nun als letzte Chance die pg_hba.conf total geöffnet:

local all all trust

Kein Erfolg!

host all all 127.0.0.1/32 trust

Kein Erfolg!

Mein Benutzer dbuser kann sich nicht via psql anmelden. Immer wieder erscheint:

psql: FATAL: Ident-Authnetifizierung für Benutzer “dbuser” fehlgeschlagen


Ich habe nun mal probiert mit einem externen Rechner und pgAdminIII (WinXP) eine Verbindung herzustellen…

host all all 192.168.100.0/24 trust
(auch die postgres.conf habe ich mit ‘*’ angepasst…)

Es funktioniert!!!

Kann mir jemand erklären was ich hier falsch mache?

Gruß
DER Ruebenmaster

Vermutlich hast Du dieseZeilen angehangen und weder beachtet, daß weiter oben andere Zeilen stehen noch das die Reihenfolge wichtig ist: was zuerst getroffen wird, gilt.

Andreas

Hallo akretschmer,
ich hatte es mit -h localhost schon probiert, ging auch nicht. Dass die Reihenfolge beachtet werden muss, steht in meinen Büchern von Eisentraut nicht drin. :astonished: (


Meine echte pg_hba.conf:

# Database administrative login by UNIX sockets
local all postgres ident sameuser
local all all trust

TYPE DATABASE USER CIDR-ADDRESS METHOD

“local” is for Unix domain socket connections only

local all all ident sameuser

IPv4 local connections:

host all all 127.0.0.1/32 md5
host all all 172.16.77.0/24 md5
host all all 172.16.78.0/24 md5
host all all 172.16.78.0/24 trust
host all all 192.168.100.0/24 md5

IPv6 local connections:

host all all ::1/128 md5



Mal die Reihenfolge ausser acht lassend. Wie bringe ich ihn dazu nur verschlüsselte Passwörter (md5) zu verwalten? Das hab ich immer noch nicht verstanden…

Gruß
DER Ruebenmaster

Einfach md5 als Methode vorschreiben…

Andreas

Hallo Andreas,

ich habe die Reihenfolge angepasst. Die Methode muss ich noch ändern, das muss ich mir aber erst noch erlesen… :astonished:

Jedenfalls funktioniert nun alles, auch der Tablespace auf einer eigenen Partition.

Vielen Dank für geistigen Trank

…an Dich

Gruß
DER Ruebenmaster, der bestimmt bald wieder Fragen hat…