Hallo,
ich habe jetzt PostgreSQL 8.4 installiert, um meine PHP-Anwendung dagegen zu testen. Der Datenbankserver läuft in einer VM unter Windows XP. Der Webserver läuft auf meinem PC. Die Anwendung läuft in PHP 5.3 und verwendet PDO zur Datenbankverbindung. Das Datenbankschema habe ich lokal mit pgadmin 3 eingerichtet. Die Firewall ist entsprechend eingerichtet.
Das hat alles mal funktioniert, ich glaube mit PGSQL 8.3. Allerdings musste ich schon etliche Fehler im Setup-Skript beseitigen, so dass ich davon ausgehe, dass sich in 8.4 viel geändert hat.
U.a. kann ich jetzt eben gar nicht erst zur Datenbank verbinden. Ich verwende dafür den Benutzer "postgres". Ich habe schon in der Datei pg_hba.conf folgende Zeile eingefügt und die vorhandenen auskommentiert:
host all all trust
Ich bekomme aber trotzdem diesen Fehler:
Uncaught exception 'PDOException' with message 'SQLSTATE[08006] [7] expected authentication request from server, but received '
Der Fehler tritt direkt beim Instanziieren der PDO-Klasse auf.
Kann mir jemand weiterhelfen? Ich hab von PGSQL anscheinend keine Ahnung, das Handbuch hilft mir jetzt nicht mehr weiter und im Web finde ich auch keine relevanten Seiten.
Akzeptiert dein Datenbankserver Verbindungen von außen (Stichwort listen_addresses = '*')?
Ansonsten schau mal in das PG-Log, was da drin steht...
Im Log steht folgendes:
2010-06-08 21:19:28 CEST LOG: ungültige IP-Adresse »trust«: Unknown host
2010-06-08 21:19:28 CEST ZUSAMMENHANG: Zeile 74 in Konfigurationsdatei »C:/Programme/PostgreSQL/8.4/data/pg_hba.conf«
2010-06-08 21:19:28 CEST FATAL: konnte pg_hba.conf nicht laden
2010-06-08 21:19:28 CEST LOG: ungültige IP-Adresse »trust«: Unknown host
2010-06-08 21:19:28 CEST ZUSAMMENHANG: Zeile 74 in Konfigurationsdatei »C:/Programme/PostgreSQL/8.4/data/pg_hba.conf«
2010-06-08 21:19:28 CEST FATAL: konnte pg_hba.conf nicht laden
Naja, steht doch alles da: deine pg_hba.conf hat einen falschen Aufbau und kann daher nicht geladen werden!
Ich hab mich nach dem hier gerichtet: Client-Authentifizierung
Wie kann ich diese Datei dann einrichten, damit ich von anderen Hosts zum Datenbankserver verbinden kann? Ich wollte mir die Antwort zu der Frage selber suchen, aber bin dabei wohl auf die falsche Quelle gestoßen. Eine passende Beispielzeile ist in der mitgelieferten Datei nicht auffindbar (zumindest nicht ohne IPv6-Kenntnisse, und ich habe noch kein funktionierendes IPv6-Netzwerk gesehen).
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Wenn du nun das Loopback-Device gegen dein Subnetz tauscht und die Auth-Methode auf trust stellst, sollte es klappen. Wichtig sind die fünf Elemente, bei dir waren es nur vier...
Danke. Nun funktioniert es. Mit "0.0.0.0/0" geht es auch. (Ich kümmer mich grad nicht um die Serversicherheit, es muss erstmal nur funktionieren.) Im gezeigten Handbuch gab es auch Zeilen mit weniger Einträgen, das scheint aber falsch oder veraltet zu sein. Ich bekomme jetzt in meinem Programm SQL-Fehler, die es so früher ganz sicher nicht gab. PGSQL 8.4 scheint wirklich ganz anders zu sein. Hab grade nachgeschaut, der letzte Test war mit Version 8.2. Muss lange her sein (Nov 2007?).
Das mit der Sicherheit merke ich
Viel Erfolg!
Das Format hat sich seit 8.2 nicht geändert.
Der falsche Eintrag dürfte also mit beiden Versionen nicht funktionieren.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen