ich habe gerade begonnen mich mit Datenbanken zu beschäftigen und habe auf meinen Win XP System PostgrSQL8.1 installiert. In unserem Netzwerk
existieren zwei Rechner.
Wie greife ich von Rechner 2 auf den PostgresSQL Server (auf Rechner 1)zu um an
die Daten in der Datenbank zu gelangen?
bei windows am besten über einen odbc treiber über tcp/ip - sprich deinem netzwerk. musst allerdings vorher dem postgresql server sagen, dass er auch auf dieser externen adresse lauschen soll und natürlich musst du deine firewall entsprechent einstellen.
also den ODBC Treiber von postgres/win habe ich installiert.
Wie greife ich nun von Rechner a auf den Rechner b zu, wo der postgresserver läuft.
Ich arbeite mit einer Software in dieser ist ein Tool implementiert von wo aus ich direkt auf die Postgres/Postgis Umgebung zugreifen kann und meine Geometriedaten laden kann. Wenn ich aber nun an einem Rechner sitze auf dem ebenso diese Software installiert ist möchte ich über das Netzwerk auch auf Postgres/Postgis zugreifen aber wie???
Ich habe mir nun die pg_hba, pg_ident, postgresql und die slavedatabse etwas genauer
angesehen. Wenn ich von einem Fremdrechner auf den Postgresserver zugreife, muss ich ver-
mutlich irgendwo die Authentifizierung erteilen bzw. die ip anmelden aber wo???
Ich habe z.B. in der pg_hba folgendes geändert aber genützt hat es nichts.
TYPE DATABASE USER CIDR-ADDRESS METHOD
IPv4 local connections:
host all all 127.0.0.1/32 md5
IPv6 local connections:
host all all 168.0.0.0 trust
und in der pq_ident
MAPNAME IDENT-USERNAME PG-USERNAME
host all all 168.0.0.0 trust
Die Firewall ist aus aber ich kann trotzdem nicht mit einem Fremdrechner auf
die Datenabnk zugreifen.
Trad da mal die entsprechende Subnet-Masek ein und probier dann nochmal. Und schau gleichzeitig ins log. Die pg_ident müsste aber eigentlich verzichtbar sein. Wichtig ist die pg_hba
Ich denke, das die von mir mit ROT markiertev Zeile das Problem lokalisiert. Aber was ich nicht verstehe ist, dass der HOST eigentlich nicht unknown sein kann. Ich habe diesen über pgadmin eintragen lassen und ersteht auch wirklich drin!
Gehe in Zeile 69 der pg_hba.conf. Dort fehlt die Subnet-Maske. Wie schon oben geschrieben. Steht doch sogar alles in der log-Message drin, nämlich genau deine rot markierte Zeile.
host all all 168.0.0.0 trust
host all all 168.192.0.0/255.255.0.0 md5
Wieviele Leerzeichen müssen eigentlich zwischen den Einträgen sein?
Habe ich die IP und die Submask richtig mit “/” getrennt?
2. Das Logfile
2006-02-21 15:02:19 LOG: could not receive data from client: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.
2006-02-21 15:02:19 LOG: unexpected EOF on client connection
2006-02-21 15:02:19 LOG: could not receive data from client: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.
2006-02-21 15:02:19 LOG: unexpected EOF on client connection
2006-02-21 15:03:17 LOG: autovacuum: processing database “geo”
2006-02-21 15:04:43 LOG: invalid IP mask “trust” in file “C:/Programme/PostgreSQL/8.1/data/pg_hba.conf” line 69: Unknown host
2006-02-21 15:04:43 FATAL: missing or erroneous pg_hba.conf file
2006-02-21 15:04:43 HINT: See server log for details.
2006-02-21 15:04:43 LOG: autovacuum: processing database “template1”
2006-02-21 15:05:04 LOG: invalid IP mask “trust” in file “C:/Programme/PostgreSQL/8.1/data/pg_hba.conf” line 69: Unknown host
2006-02-21 15:05:04 FATAL: missing or erroneous pg_hba.conf file
2006-02-21 15:05:04 HINT: See server log for details.
2006-02-21 15:05:11 LOG: invalid IP mask “trust” in file “C:/Programme/PostgreSQL/8.1/data/pg_hba.conf” line 69: Unknown host
2006-02-21 15:05:11 FATAL: missing or erroneous pg_hba.conf file
2006-02-21 15:05:11 HINT: See server log for details.
Beachte bitte das IPv4 und IPv6. Das sind keine gültigen IPv6-Adressen und ich gehe davon aus, das du das klassische IPv4 benutzt. Das mit dem Schräger ist schon ok, die andere Variante siehst du in meiner pg_hba.conf:
host all all 127.0.0.1 255.255.255.255 ident sameuser
host all all 10.17.1.1 255.255.255.0 password
Eins reicht. Ich nehm aber des besseren Handlings halber Tabulatoren.
Deine Rechner stehen in Pennsylvania? Spass beiseite, bist du sicher das du nicht 192.168.1.x meinst? Wenn ja, vergib Adressen aus den privaten Ranges:
Aus den Angaben der Netzwerkadressen kann ich entnehmen, dass die IP-Adressen der Netzwerkkarte explizit zugeteilt wurden. Andererseits hast Du aber auch Verbindung mit dem Internet. Kannst Du mal Deine Netzwerkkonfiguration beschreiben. Bei der Verbindung der beiden Rechner wird da ein HUB oder ROUTER verwendet oder sind die beiden Rechner nur mittels eines Kabels verbunden? Wenn nur mit einem Kabel, ist das ein spezielles Netzwerkkabel oder ein ganz normales?
Ob überhaupt eine Verbindung mit einen anderen Rechner zustande kommt kann man mit PING im DOS-Modus testen. Dazu gibt Du z.B folgenden Befehl ein:
ping 192.168.0.1
wobei die IP-Adresse nicht die eigene sondern die eines anderen Rechners ist.
Da Du mit WinXp arbeitest, solltest Du unter Netzwerkumgebung ==> Microsoft Windows Netzwerk die Namen der beiden Rechner sehen, oder, falls beide die gleiche Gruppe anwenden, unter ==> (??? Gruppe ???). In der Regel kann man auch dort “Drucker und Faxgeräte” und “Geplante Task” sehen, da diese defaultmäßig immer freigeschaltet sind.
herzlichen Dank für eure Hilfe - jetzt funktioniert alles.
Meine beiden Rechner hatten die IP 168.192.x.x. Beide konnten über diese IP kommunizieren, egal ob win-win oder linux-linux oder win-linux. Selbst ein Ping hat wunderbar geklappt. Nachdem ich aber die IP auf 192.168.x.x geändert hatte, hat auch die Kommunikation mit Postgres funktioniert.
Was mich nur noch interessieren würde ist der Punkt warum die Postgreskommunikation unter der alten IP nicht funktioniert hat. Ich habe am pg_hba.conf nach der IP Umstellung ja nichts geändert.