Postgresql lässt Benutzerlogins nur eingeschränkt zu
Biesterfeld
- datenbank
Hej,
folgendes Problem mit einer PostgresDatenbank.
Auf einem Server mit der IP x.x.x.x lag in einem Postgres 8.2.5 eine Datenbank dbname. Als Datenbankbesitzer war der Linux Systemuser nutzer_x eingerichtet. Um nun von irgendeinem Rechner (z.B. z.z.z.z) auf die Datenbank zuzugreifen wurde ein ssh-Tunnel auf diesem eingerichtet:
ssh -L 5432:localhost:5432 nutzer_x@x.x.x.x -N
Dann ließ sich z.B. mit dem DBVisualizer ohne Probleme von z.z.z.z als localhost:5432 auf die Datenbank zugreifen. Nun musste die Datenbank auf einen anderen Server (y.y.y.y) per Dump umziehen, wo leider nur ein Postgres 8.1.4 verfügbar ist. Zudem gab es den Benutzer nutzer_x nicht sondern nur den Systemuser nutzer_y. Um die Kompatibilität zu erhalten wurde daher die Postgres-Rolle nutzer_x manuell eingerichtet. Soweit alles klar. Es ist nun kein Problem auf y.y.y.y sich z.B. in die Datenbank per
psql -U nutzer_y dbname
einzuloggen.
Ein einloggen per
psql -U nutzer_x --password dbname
wird allerdings mit einem
psql: FATAL: Ident-Authentifizierung für Benutzer »nutzer_x« fehlgeschlagen
quittiert. Das obwohl das Passwort mit ALTER ROLE nutzer_x WITH PASSWORD 'test'; explizit gesetzt worden ist.
Ein einfaches \du in psql zeigt:
Rollenname | Superuser | Rolle erzeugen | DB erzeugen | Verbindungen | Mitglied von
------------+-----------+----------------+-------------+--------------------+--------------
nutzer_y | ja | ja | ja | keine Beschränkung |
nutzer_x | ja | ja | ja | keine Beschränkung |
postgres | ja | ja | ja | keine Beschränkung |
Ein \l
Name | Eigentümer | Kodierung
-----------+------------+-----------
dbname | nutzer_x | UTF8
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
Der Inhalt der pg_hba.conf lautet:
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
Auch lässt sich nun nicht mehr von z.z.z.z per ssh-Tunnel und DBVisualizer auf die Datenbank zugreifen (was die eigentlich wichtige Funktionalität wäre). Weder als nutzer_x noch als nutzer_z.
Bin für jeden Hinweis dankbar, wieso Postgres den Zugang verweigert.
Beste Grüße
Biesterfeld