PostgreSQL 18.0: Zugriff mit dem Rechnernamen gelingt nicht mehr

Ich benutze PostgreSQL überwiegend mit lokalen Verbindungen, gelegentlich aber auch entweder von einem anderen Rechner im gleichen häuslichen LAN oder von einer virtuellen Maschine aus. Der Server läuft unter Windows (inzwischen Windows 11), virtuelle Maschinen unter Linux (verschiedene Distributionen im Lauf der Zeit).

Das hat bisher immer gut funktioniert, seit mehreren PostgreSQL-Versionen mit der gleichen pg_hba.conf und mit den gleichen Verbindungszeichenketten (meist in Python-Programmen, manchmal auch C#). Damit ich bequemer Programme hin und her kopieren kann, schreibe ich meist von vornherein den Rechnernamen in die Verbindungszeichenkette, also für Python und PostgreSQL auf dem Rechner “OMEN” etwa so:

CONNSTR = “host=omen dbname=fussball user=xyz password=zzz”

Jetzt habe ich seit kurzer Zeit PostgreSQL 18 installiert und da geht das so nicht mehr. Die Verbindung von einem anderen Rechner kommt gar nicht zustande, lokal geht es nur mit “host=localhost” - das kann ich dann natürlich auch weglassen, es ist Default. Ich habe versucht, in der aktuellen PostgreSQL-Dokumentation herauszufinden, was los ist, das ist mir aber nicht gelungen. Kann immer daran liegen, dass ich vorhandene Information nicht richtig verstanden habe.

Fehlermeldung, wenn ich den connection string oben benutze:

Traceback (most recent call last):
File “<pyshell#4>”, line 1, in
conn = psycopg.connect(CONNSTR)
File “C:\Program Files\Python313\Lib\site-packages\psycopg\connection.py”, line 125, in connect
raise type(last_ex)(“\n”.join(lines)).with_traceback(None)
psycopg.errors.ConnectionTimeout: connection timeout expired
Multiple connection attempts failed. All failures were:

  • host: ‘omen’, port: None, hostaddr: ‘fe80::99b0:e744:c5f9:c0f1’: connection timeout expired
  • host: ‘omen’, port: None, hostaddr: ‘192.168.178.31’: connection timeout expired

Der einschlägige Abschnitt in meiner pg_hba.conf (hat so mit PostgreSQL 17 problemlos funktioniert, auch unter Windows 11):

TYPE DATABASE USER ADDRESS METHOD

“local” is for Unix domain socket connections only

local all all scram-sha-256

IPv4 local connections:

host all all 127.0.0.1/32 scram-sha-256

IPv6 local connections:

host all all ::1/128 scram-sha-256

Hostname statt localhost scheint einen eigenen Eintrag zu brauchen

host all all fe80::/10 scram-sha-256
host all all samenet scram-sha-256
host all all 10.0.2.1/24 scram-sha-256

Allow replication connections from localhost, by a user with the replication privilege.

local replication all scram-sha-256
host replication all 127.0.0.1/32 scram-sha-256
host replication all ::1/128 scram-sha-256

Wo liegt der Fehler oder was hat sich geändert? Oder habe ich vielleicht doch eher ein Python-Problem?

Danke für Hinweise!

Ist fast immer ein Problem mit dem Netzwerk zwischen dem Datenbankserver und der Anwendung. Firewall oder Ähnliches.

Wenn Postgres die Verbindung zurückweist, gibt es eine andere Fehlermeldung.

Kann es sein, dass Python die ursprüngliche Fehlermeldung nicht unverändert weiterleitet? Ich hatte zuerst PostgreSQL 17 auf dem neuen Rechner, der Fehler trat aber erst nach dem Update auf 18 auf.

Auf der anderen Seite scheint tatsächlich mit unserem Netz etwas nicht zu stimmen, das ist mir aber erst nach dem Beitrag klar geworden. Werde weiter forschen und mich evtl. noch mal melden.

Das kann ich nicht sagen, ich nutze kein Python. Es würde mich aber wundern, wenn das der Fall ist.

Um sicher zu gehen, könntest Du log_connections auf all setzen und es nochmal probieren (config reload nicht vergessen). Ich glaube das schreibt dann auch gescheiterte Verbindungsversuche in’s logfile. Ich bin mir allerdings nicht ganz sicher, ob dabei auch Verbindungsversuche ge-logged werden die wegen der pg_hba abgelehnt werden.

Mit log_connections = on wird alles geloggt, was den Server erreicht, auch wenn es in der pg_hba.conf implizit oder explizit abgelehnt wird.

Bitte alles vergessen, was ich geschrieben habe, ich bin einfach nur doof. Zwar habe ich in der postgresql.conf den Eintrag für “listen-adresses” auf “*” gestellt, aber dann vergessen, das Kommentarzeichen vorn zu löschen.

Korrigiert, Server neu gestartet, PSQL gestartet und Verbindung via Rechnernamen hergestellt. Klappt. Und die Fehlermeldung, die vorher von PSQL kam, war natürlich genau richtig.

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.