ich habe ein Problem mit dem Zugriff auf meine Postgres-Datenbank, und nehme an, dass eine Einstellung irgendwo noch nicht korrekt ist:
Auf einem Linux-System läuft Postgres 8.1. Mit einem Windows-Rechner und PgAdmin greife ich auf die Datenbank zu - ohne Probleme. In der hba.conf ist die IP-Adresse meines Zugriffsrechners explizit eingetragen.
Auf dem besagten Windows-Rechner läuft ein Apache-Webserver mit PhpPgAdmin. Die für Postgres benötigten Module sind bereits in der php.ini eingetragen, deshalb bringt PhpPgAdmin auch keine Fehlermeldung. In PhpPgAdmin ist mein Server bereits richtig eingetragen. Will ich mich jetzt über PhpPgAdmin anmelden, kommt beim richtigen Nutzernamen / Passwort die Fehlermeldung “Anmelden nicht erlaubt”.
Weiterhin habe ich mit ezSQL (PHP-Klasse für einfachen Datenbankzugriff) und PHP ein paar SQL-Abfragen versucht, doch ich sehe jedesmal nur eine leere Seite. Alle Daten zum Server sind aber richtig angegeben.
Woran liegt das? Was muss ich ändern, damit ich von meinem Webserever aus mit PHP auf die Postgres-Datenbank zugreifen kann? Auch wenn du mir diese Fragen nicht beantworten kannst, weist du hier vielleicht Rat: Um Auszuschließen, dass es sich um eine Fehlkonfiguration in der hba.conf Datei handelt, was muss man in diese Datei eintragen, damit alle Ip-Adressen uneingeschränkten Zugriff haben? (Natürlich nur zum Test)
Die pg_hba.conf hat mehr Felder als nur das für die IP.
Weiterhin habe ich mit ezSQL (PHP-Klasse für einfachen Datenbankzugriff) und PHP ein paar SQL-Abfragen versucht, doch ich sehe jedesmal nur eine leere Seite. Alle Daten zum Server sind aber richtig angegeben.
PHP erlaubt die Ausgabe von Fehlermeldungen. Die Funktionen zum Aufbau einer Verbindung geben dazu Rückgabewerte. Es ist halbweg guter Code, diese Rückgabewerte nicht achtlos zu entsorgen. Das tust Du offensichtlich, wenn Du nur leeren Seiten bekommst.
Woran liegt das?
Steht möglicherweise in der Fehlermeldung, die PHP zurückgeben will.
Auch wenn du mir diese Fragen nicht beantworten kannst, weist du hier vielleicht Rat: Um Auszuschließen, dass es sich um eine Fehlkonfiguration in der hba.conf Datei handelt, was muss man in diese Datei eintragen, damit alle Ip-Adressen uneingeschränkten Zugriff haben? (Natürlich nur zum Test)
Das Stichwort hier dürfte ‘trust’ sein. Die pg_hba.conf ist reichlich dokumentiert/kommentiert.
Das habe ich auch schon mitbekommen. Da ja alle diese Felder mit den korrekten Inhalten gefüllt sind, kann ich auch von meinem Windows-Rechner aus zugreifen.
hba.conf:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
host all all 192.168.1.79/24 trust
Auch wenn es für dich offensichtlich zu sein scheint, ist es nicht der Fall. Fehlermeldungen werden nicht unterdrückt. Dazu der Code der PHP-Dateien (siehe Anhang).
Wenn doch irgendwo Fehlermeldungen unterdrückt sein sollten, lasst es mich bitte wissen.
Zum Stichwort “trust” habe ich bereits oben etwas geschrieben. Hätte das nicht von Anfang an dort gestanden, hätte ich von meinem Windows-Rechner nie eine Verbindung aufbauen können.
Wenn du eine ordentliche, deutsche Dokumentation zur besagten Datei kennst, lass mich die Adresse wissen, ich habe nämlich bisher nichts gefunden.