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!