2014-02-27 12 views
10

Ich habe versucht, pg_hba.conf-Datei zu bearbeiten, um in der Lage zu sein, den Server unter Verwendung nur der IP-Adresse mit, bisher, keinen Erfolg.Zugriff auf PostgreSQL-Server von LAN

Zum Beispiel kann ich auf mit «localhost», aber ich möchte die IP-Adresse für den Zugriff verwenden, mein Router gab, ist mir wich etwas wie 192.168.1.X

Diese mi pg_hba.conf ist:

# TYPE DATABASE  USER   ADDRESS     METHOD 
# "local" is for Unix domain socket connections only 
local all    all          trust 
# IPv4 local connections: 
host all    all    127.0.0.1/32   trust 
# IPv6 local connections: 
host all    all    ::1/128     trust 
# Allow replication connections from localhost, by a user with the 
# replication privilege. 
#local replication  postgres        trust 
#host replication  postgres  127.0.0.1/32   trust 
#host replication  postgres  ::1/128     trust 
host all all 0.0.0.0/0 trust 

Irgendwelche Hilfe?

+0

Es gibt mehrere Informationen, die benötigt werden. Ihr Router gibt Ihnen eine LAN-IP, so dass Sie von außerhalb Ihres LANs nicht auf Ihren Computer zugreifen können. Ich bin nicht vertraut mit PostgreSQL, aber ich weiß, dass MySQL auf Ubuntu erfordert, dass ich den MySQL-Dienst auf Ubuntu neu starten. Welches Betriebssystem verwenden Sie? Und schließlich, haben Sie eine Firewall, die den Zugriff auf den von PostgreSQL verwendeten Port verhindert? –

+0

Ich habe keine Firewall und ich bin mir bewusst, dass es nur von LAN zugegriffen werden konnte. Ich benutze Linux 3.12 (Manjaro) @gabe –

+0

@simon wollte nur sicherstellen, dass Sie der LAN-Einschränkung bewusst waren, da Ihr Titel überall sagte. Tut mir leid, ich kann nicht mehr Hilfe sein, aber ich benutze Ubuntu und MySQL. Ich würde vorschlagen, dass Sie PostgreSQL und OS zu Ihrer Frage hinzufügen, damit Leute, die Ihnen in Zukunft helfen wollen, es nicht verpassen. Viel Glück. –

Antwort

22

Bearbeiten Sie zunächst die Datei postgresql.conf und geben Sie listen_addresses ein. Der Standardwert von 'localhost' wird nur auf den Loopback-Adapter abgehört. Sie können es in '*' ändern, dh alle Adressen abhören oder die IP-Adresse der Schnittstellen auflisten, von denen Verbindungen akzeptiert werden sollen. Beachten Sie, dass dies die IP-Adresse ist, die der Schnittstelle zugewiesen wurde, die Sie mit den Befehlen ifconfig oder ip addr sehen können.

Sie müssen postgresql für die Änderungen neu starten, damit listen_addresses wirksam werden.

nächstes in pg_hba.conf, werden Sie einen Eintrag wie diesen brauchen:

# TYPE DATABASE  USER   ADDRESS     METHOD 
host {dbname}  {user}   192.168.1.0/24   md5 

{dbname} ist der Name der Datenbank Sie Zugang zu ermöglichen sind. Sie können "all" für alle Datenbanken setzen.

{Benutzer} ist der Benutzer, der eine Verbindung herstellen darf. Beachten Sie, dass dies der Postgresql-Benutzer ist, nicht unbedingt der Unix-Benutzer.

Der ADDRESS-Teil ist die Netzwerkadresse und Maske, die Sie zulassen möchten. Die von mir angegebene Maske funktioniert für 192.168.1.x wie gewünscht.

Der METHOD-Teil ist die zu verwendende Authentifizierungsmethode. Dort gibt es eine Reihe von Möglichkeiten. md5 bedeutet, dass es ein md5-Hash-Passwort verwendet. "Vertrauen", das Sie in Ihrem Beispiel hatten, bedeutet überhaupt keine Authentifizierung - das ist definitiv nicht zu empfehlen.

Änderungen an pg_hba.conf werden nach dem Neuladen des Servers wirksam. Sie können dazu pg_ctl reload verwenden (oder über die Init-Skripte, abhängig von Ihrer Betriebssystem-Distribution).

+0

Eigentlich brauchen Sie nur ein 'pg_ctl reload', damit es wirksam wird, nicht ein vollständiger Neustart. Oder 'SELECT pg_reload_conf()'. –

+1

@CraigRinger Der Neustart ist für listen_addresses erforderlich (Handbuch sagt "Dieser Parameter kann nur beim Serverstart gesetzt werden."). Wie gesagt, pg_hba kann über Reload geändert werden. – harmic

+0

Ah, mein Schlechter. -ENOCOFFEE. –

Verwandte Themen