Fernzugriff über Netzwerk auf PostgreSQL Datenbank: Unterschied zwischen den Versionen

Aus ITwiki
Wechseln zu: Navigation, Suche
K
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Installation unter Debian ==
+
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.
Das Paket für die Installation heisst:
 
* Postgres 8.1
 
  
=== Benutzer einrichten ===
+
Die erste zu editierende Datei ist ''/var/lib/pgsql/data/pg_hba.conf''. Das Ende der Datei sollte so ähnlich wie folgt aussehen:
Um sich das Einrichten von Benutzern zu erleichtern, sollte zuerst mit dem Benutzer ''root'' dem Benutzer ''postgres'' ein Passwort zugewiesen werden:
 
<span style="color: #008888">debian:/#</span> passwd postgres
 
  
Anschließend meldet man sich mit dem Benutzer ''postgres'' an.
+
<source lang="actionscript">
<span style="color: #008888">debian:/#</span> su postgres
+
# 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
  
Nun vergeben wir dem Benutzer ''postgres'' auf dem SQL Server das selbe Passwort wie zuvor.
+
# "local" is for Unix domain socket connections only
<span style="color: #008888">postgres@debian:/$</span> psql -c "ALTER USER postgres WITH PASSWORD 'MeinPasswort'"
+
# IPv4 local connections:
 +
# IPv6 local connections:  
 +
local all all        md5
 +
host all all  127.0.0.1  255.255.255.255  md5
 +
</source>
  
Danach ist es möglich, sich an der Datenbank anzumelden, um beispielsweise über SQL einen neuen Benutzer oder eine neue Datenbank anzulegen.
+
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:
<span style="color: #008888">postgres@debian:/$</span> psql -h localhost -U postgres template1
 
  
=== PHPPGAdmin ===
+
<source lang="actionscript">
Um auch mit PHPPGAdmin auf die Datenbank zugreifen zu können, werden folgende Pakete benötigt:
+
host all all 192.168.0.10/32 trust
* Apache2
+
</source>
* php5
 
* php5-pgsql
 
* phppgadmin
 
  
 +
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).
  
== Netzwerkzugriff ==
+
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:
Bei PostgreSQL ist der Zugriff über Netzwerk standardmäßig deaktiviert. Es ist deshalb nötig ein paar Konfigurationen vorzunehmen.
 
  
 +
<source lang="actionscript">
 +
#listen_addresses='localhost'
 +
</source>
  
# Öffne die Datei ''postgresql.conf''<br><br>
+
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!).
# Entferne die # bei bei der Zeile ''listen_addresses'' und setzte "*" um den allen Netzwerkadressen den Zugriff zu erlauben.<br><br>[[Bild:postgresql-network-access-2.JPG]]<br><br>
+
 
# Editiere die Datei ''pg_hba.conf'' und ergänze die Datei um die Zeile für Dein Netzwerk, in diesem Beispiel ist die Netzwerkadresse 10.0.0.0. Statt trust kann auch md5 verwendet werden, wenn md5 Passwörter hinterlegt wurden.<br><br>[[Bild:postgresql-network-access-3.JPG]]<br><br>
+
<source lang="actionscript">
 +
listen_addresses='*'  
 +
</source>
 +
 
 +
<source lang="actionscript">
 +
listen_addresses='192.168.2.10'
 +
</source>
 +
 
 +
Das wär es soweit. Stelle sicher, dass deine Firewall die Verbindung über den Port 5432 zulässt und dann starte Postgres einfach neu.  
  
Weitere Informationen über die Datei ''pg_hba.conf'' findest Du unter [http://www.postgresql.org/docs/8.2/interactive/auth-pg-hba-conf.html http://www.postgresql.org/docs/8.2/interactive/auth-pg-hba-conf.html].
 
  
 
== Nützliche Links ==
 
== Nützliche Links ==
  
 
* [http://www.postgresql.org/docs/8.2/static/index.html PostgreSQL Dokumentation]
 
* [http://www.postgresql.org/docs/8.2/static/index.html PostgreSQL Dokumentation]
 +
* [http://www.postgresql.org/docs/8.2/interactive/auth-pg-hba-conf.html Weitere Informationen zur pg_hba.conf]
  
 
[[Kategorie:Datenbanken]]
 
[[Kategorie:Datenbanken]]

Aktuelle Version vom 12. Dezember 2012, 10:27 Uhr

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 Port 5432 zulässt und dann starte Postgres einfach neu.


Nützliche Links[Bearbeiten]