2016-09-16 6 views
0

Erstens: Meine einzige Erfahrung mit SQL ist SQLite, die eine serverlose Engine ist. Ich bin neu in dieser ganzen Client/Server Geschichte.Verbinden Sie die Clients mit dem portablen PosgreSQL-Server

Zusammenfassung meines Ziels: Ich muss lesen/schreiben von/in eine PosgreSQL-Datenbank von verschiedenen Computern. Diese Computer (alle mit Windows 7 oder 10) teilen sich das gleiche Netzwerk, aber ich kann keine Software auf ihnen installieren.

Meine Idee war, den portablen PostgreSQL-Server herunterzuladen und in einem freigegebenen Netzwerkverzeichnis zu speichern (z. B. Y: \ PortableProject), so dass alle Computer Zugriff auf die ausführbaren Dateien und den Datenordner mit den Datenbanken haben. Angenommen, die Netzwerk-IP ist 192.170.1.200 (von ipconfig Befehl), hier sind die Schritte, die ich versuchte, so weit zu tun:

  1. Um IP 192.170.1.200 ist ein Host, offene pg_hba.conf Datei zu ermöglichen, und fügen Sie die folgende Zeile in der EOF

    host all    all    192.170.1.200/32     trust 
    
  2. um alle Computer die Erlaubnis geben, den Server, öffnen postgresql.conf und aktualisieren listen_addresses-*

    Zugriff 10
  3. Öffnen Sie die Eingabeaufforderung in einem Computer (z. Computer A) und starten Sie den Server von einer Eingabeaufforderung mit dem folgenden Befehl:

    "Y:\PortableProject\PostgreSQLPortable\App\PgSQL\bin\pg_ctl.exe" start -D "Y:\PortableProject\PostgreSQLPortable\Data\data" 
    
  4. mit dem Schreiben gehen und in allen Computern lesen. ZB auf Computer B, öffnen Sie dessen Befehl prompt und alle Informationen auf dem Tisch tabtest aus der Datenbank gelesen dbtest (vorausgesetzt sie existieren) mit dem Befehl:

    "Y:\PortableProject\PostgreSQLPortable\App\PgSQL\bin\psql.exe" -h 192.170.1.200 -p 5432 -U postgres -d dbtest -c "SELECT * FROM tabtest" 
    
  5. die Verbindung auf Computer A Close:

    "Y:\PortableProject\PostgreSQLPortable\App\PgSQL\bin\pg_ctl.exe" stop -D "Y:\PortableProject\PostgreSQLPortable\Data\data" 
    

Das Problem auf Schritt tritt 4. Selbst wenn ich es von Computer A laufen lasse, erhalte ich folgende Fehlermeldung

psql: could not connect to server: Connection refused (0x0000274D/10061) 
     Is the server running on host "192.170.1.200" and accepting 
     TCP/IP connections on port 5432? 

Mache ich es völlig falsch? Ist es überhaupt möglich, mein Ziel zu erreichen?

+0

weiß nicht, warum Sie tragbare postgre stattdessen reguläre verwenden. Ihr Problem ist die db von verschiedenen PC gelesen und regelmäßig tun Sie das sehr gut und Sie müssen nicht installieren sw auf diesen PC. Portable ist für, wenn Sie Ihre db außerhalb des Büros nehmen müssen. –

+0

Tut mir leid, aber ich weiß wirklich nicht, wie ich vorgehen soll, indem ich Ihrem Vorschlag folge. Wie kann ich von einer Postgre-Datenbank ohne Installation und ohne portable Postgres lesen? Ich muss auch von allen Computern im Netzwerk einfügen und aktualisieren. –

+1

Vielleicht verstehe ich Ihr Problem nicht. Aber wenn Sie nichts installieren möchten, entwickeln Sie eine Web-App. –

Antwort

1

Wird der Server auf dem Host "192.170.1.200" ausgeführt und akzeptiert er die TCP/IP-Verbindungen an Port 5432?

Das bedeutet, der Server läuft in 192.170.1.200, jetzt werden Sie von der Server-PC oder von einem anderen PC ausführen?

Der pg_hba.conf soll auflisten, welche anderen Adressen/Benutzer Zugriff auf diesen Server haben.

Also, wenn Sie den Zugriff aus dem gleichen PC sind verwenden Sie

# TYPE DATABASE  USER   ADDRESS     METHOD 

# IPv4 local connections: 
host all    all    127.0.0.1/32   md5 

Für externe Adresse verwenden Sie so etwas wie

host all    all    192.170.1.1/24   trust 

mit der folgenden IP-Adressbereich Dadurch wird der Zugriff auf den PC ermöglichen. IP Calculator

HostMin: 192.170.1.1 
HostMax: 192.170.1.254 
Verwandte Themen