Fernzugriff über Netzwerk auf PostgreSQL Datenbank

Aus ITwiki
Version vom 12. Dezember 2012, 10:17 Uhr von Franky (Diskussion | Beiträge)

Wechseln zu: Navigation, Suche

Installation unter Debian

Das Paket für die Installation heisst:

  • Postgres 8.1

Benutzer einrichten

Um sich das Einrichten von Benutzern zu erleichtern, sollte zuerst mit dem Benutzer root dem Benutzer postgres ein Passwort zugewiesen werden:

debian:/# passwd postgres

Anschließend meldet man sich mit dem Benutzer postgres an.

debian:/# su postgres

Nun vergeben wir dem Benutzer postgres auf dem SQL Server das selbe Passwort wie zuvor.

postgres@debian:/$ psql -c "ALTER USER postgres WITH PASSWORD 'MeinPasswort'"

Danach ist es möglich, sich an der Datenbank anzumelden, um beispielsweise über SQL einen neuen Benutzer oder eine neue Datenbank anzulegen.

postgres@debian:/$ psql -h localhost -U postgres template1

phpPgAdmin

Um auch mit phpPgAdmin auf die Datenbank zugreifen zu können, werden folgende Pakete benötigt:

  • Apache2
  • php5
  • php5-pgsql
  • phppgadmin


Netzwerkzugriff setzen

Bei PostgreSQL ist der Zugriff über Netzwerk standardmäßig deaktiviert. Zum Aktivieren des Netzwerkzugriffs am Postgres SQL Server müssen zwei Konfigurationsdateien editiert werden. Falls du die Postgres Version 8.2.x oder höher im Einsatz hast, kann es sein, dass die Konfigurationsdateien in einem anderen Verzeichnis liegen.

Die erste zu editierende Datei ist /var/lib/pgsql/data/pg_hba.conf. Das Ende der Datei sollte so ähnlich wie folgt aussehen:

# If you want to allow non-local connections, you need to add more
# "host" records. In that case you will also need to make PostgreSQL listen
# on a non-local interface via the listen_addresses configuration parameter,
# or via the -i or -h command line switches.
#
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
# IPv4 local connections:
# IPv6 local connections: 
local all all        md5
host all all  127.0.0.1   255.255.255.255   md5

Nun musst du am Besten am Ende der Datei die IP Adresse des Clients, von dem aus du auf die Datenbank zugreifen möchtest, hinzufügen. Wenn Du beispielsweise von der IP Adresse 192.168.0.10 mit der Subnetmask 255.255.255.0 verbinden möchtest, füge folgende Zeile hinzu:

host all all 192.168.0.10/32 trust

Du kannst auch das trust zu md5 ändern, wenn du möchtest, dass der Host nur einen Login mit einem MD5 verschlüsselten Passwort erlauben soll (trust erlaubt die Verbindung ohne System-Zugangsdaten).

Der nächste Schritt ist das generelle Aktivieren des Netzwerkzugriffs für Postgres, so dass er auf fremde Anfragen genauso hört, wie auf lokale. Editiere die Datei /var/lib/pgsql/data/postgresql.conf und suche nach folgender Zeile:

#listen_addresses='localhost'

Du kannst diese Zeile in eine der folgenden zwei Zeilen ändern. Beachte dabei die # am Anfang der Zeile zu entfernen, wenn dort eine vorhanden ist. Die Erste erlaubt Postgres auf alle lokalen IPs zu hören, wobei die Zweite eine bestimmte IP für Postgres zum darauf höhren vorgibt (ändere diese auf deine IP!).

listen_addresses='*'
listen_addresses='192.168.2.10'

Das wär es soweit. Stelle sicher, dass deine Firewall die Verbindung über den 5432 zulässt und dann starte Postgres einfach neu.

Datei:Postgresql-network-access-2.JPG Datei:Postgresql-network-access-3.JPG


Nützliche Links