Roundcube kann keine Verbindung zur PostgreSQL-Datenbank herstellen

Roundcube kann keine Verbindung zur PostgreSQL-Datenbank herstellen

Ich versuche, Roundcube auf einem CentOS 5.5-Server mit einer PostgreSQL 8.1.22-Datenbank zu installieren.

Die erste Seite des Installationsskripts, das das Vorhandensein von PHP-Bibliotheken und dergleichen prüft, gibt mir durch die Bank grüne OKs. Ich habe mir sogar die Mühe gemacht, die optionalen zu installieren.

Seite zwei generiert mir zwei Konfigurationsdateien (main.inc.php und db.inc.php), die ich einsetze.

Auf Seite drei läuft es schief:

DB-Konfigurations-DSN prüfen (Schreiben): NICHT OK (MDB2-Fehler: Verbindung fehlgeschlagen)

Stellen Sie sicher, dass die konfigurierte Datenbank existiert und der Benutzer über Schreibrechte verfügt.

DSN: pgsql://roundcube:password@localhost/roundcubemail

Die dort angezeigten Informationen (Benutzer Roundcube, Passwort password, Server localhost und Datenbank Roundcubemail) sind alle korrekt. Die Datenbank Roundcubemail gehört dem Benutzer Roundcube und dieser hat Schreibberechtigung.

Ich habe keine Ahnung, warum keine Verbindung zu dieser Datenbank hergestellt werden kann. Ich verwalte es mit phpPgAdmin, das auf demselben Apache auf demselben Server läuft!

aktualisieren
einige weitere Informationen: meine Postgres-Protokolldatei enthält eine Menge davon;
FATAL: no pg_hba.conf entry for host "127.0.0.1", user "roundcube", database "roundcubemail", SSL off
meine Datei pg_hba.conf enthält jedoch Folgendes:
# "local" is for Unix domain socket connections only
local all all trust
host all all 127.0.0.1/32 trust

Die Verbindung über Telnet sowohl zum lokalen Host als auch zu 127.0.0.1 auf Port 5432 funktioniert problemlos.

Antwort1

Die Antwort von DerfK oben ist falsch. Sie können PostgreSQL mit einem Unix-Socket mit Roundcube verwenden, vorausgesetzt, Sie konfigurieren es richtig. In db.inc.php sollte es lauten:

$rcmail_config['db_dsnw'] = 'pgsql://roundcube:*password*@unix(/tmp)/roundcube';

Vorausgesetzt, Sie haben in pgsql einen "roundcube"-Benutzer für die Datenbank "roundcube" mit dem Passwort "Passwort" In Ihrer Hauptdatei postgresql.conf sollten Sie das Abhören der IP-Ebene verhindern, indem Sie Folgendes ändern:

listen_addresses = ''
unix_socket_directory = '/tmp'
ssl = false  # There's no point in using SSL on a local UNIX socket except wasting CPU

Außerdem, und das ist der wichtigste Teil, müssen Sie in pg_hba.conf diese Zeile hinzufügen:

local   all         roundcube                        md5

Starten Sie alles neu und es funktioniert einwandfrei und schneller als bei Verwendung von TCP-Verbindungen (da Sie die gesamte IP-Kapselung vermeiden).

verwandte Informationen