Du öppnar pgAdmin, fyller i anslutningsuppgifterna och får ändå ingen kontakt med databasen. PostgreSQL använder vanligtvis port 5432, men rätt portnummer beror också på hur servern körs och varifrån anslutningen kommer.

5432 är standard, men anslutningsvägen avgör vilken port du ska använda
- Standardport: PostgreSQL lyssnar normalt på TCP-port 5432.
- Docker: porten på din dator kan skilja sig från porten inne i containern.
- Flera servrar: varje server på samma dator behöver en egen ledig port.
- Felsökning: kontrollera port, värdnamn och om servern faktiskt lyssnar.
5432 är standardporten, inte en garanti
Portnumret talar om vilken nätverkstjänst klienten ska kontakta på en dator. PostgreSQL:s vanliga TCP-port är 5432, och den används ofta i anslutningssträngar, administrationsverktyg och utvecklingsmiljöer. Men en administratör kan ändra serverns port, så standardvärdet räcker inte alltid.
Jag tycker att det är lättast att felsöka genom att skilja på serverns adress och porten: adressen pekar ut datorn eller tjänsten, medan porten pekar ut PostgreSQL på den adressen. PostgreSQL-dokumentationen beskriver porten som en inställning i serverns konfiguration; kontrollera därför det faktiska värdet i PostgreSQLs dokumentation om anslutningsinställningar om 5432 inte fungerar.
I Docker kan datorns port skilja sig från containerns
En anslutning kan se rätt ut i containern men ändå misslyckas från datorn. I Docker kan en värdport skickas vidare till containerns port, och numren behöver inte vara samma. I uttrycket -p 5433:5432 är 5433 porten på värddatorn och 5432 porten i containern.
localhost:5433, medan en annan container på samma Docker-nätverk vanligtvis ansluter till PostgreSQL-tjänstens namn och port 5432. Docker förklarar skillnaden mellan publicerad port och containerport i sin guide till PostgreSQL i Docker.
Som tumregel: från värddatorn använder du värdporten; från en container på samma nätverk använder du tjänstens namn och den interna porten. Om två PostgreSQL-containrar ska köras samtidigt kan de alltså båda lyssna på 5432 internt, medan de publiceras på exempelvis 5432 och 5433 på datorn.
Felmeddelandet pekar ofta ut nästa kontroll
Orden i felmeddelandet hjälper dig att välja rätt felsökningssteg. Kontrollera först om anslutningen går till rätt värd och port; ändra inte serverns konfiguration innan du vet om problemet gäller en upptagen port, en felaktig adress eller en server som inte är igång.
| Situation eller fel | Trolig förklaring | Gör så här |
|---|---|---|
| ”Connection refused” på 5432 | Ingen server tar emot anslutningar på den porten, eller så når anslutningen fel värd. | Kontrollera att PostgreSQL körs och att värdnamn och port stämmer. |
| ”Address already in use” när servern startar | En annan process använder redan porten. | Ta reda på vilken process som lyssnar, eller konfigurera en annan port. |
| Det fungerar i containern men inte från datorn | Porten har inte publicerats, eller så använder klienten containerns port i stället för värdporten. | Kontrollera Docker-portmappningen och anslut till den publicerade porten. |
| Det fungerar från datorn men inte från en annan container | localhost pekar på den container där programmet körs, inte på PostgreSQL-containern. |
Använd databasens tjänstenamn på det gemensamma Docker-nätverket. |
Fel om att porten redan används betyder alltså inte automatiskt att PostgreSQL är trasigt. PostgreSQLs dokumentation beskriver hur en annan server som redan lyssnar på samma port kan hindra uppstarten; felsökningsavsnittet om serverstart rekommenderar att du granskar felmeddelandet och serverloggen.
Hitta porten som servern faktiskt använder
Om du redan kan ansluta till databasen kan du fråga servern direkt. Kör SHOW port; i psql eller ett SQL-verktyg; resultatet visar portinställningen för just den server du nått. Det är mer tillförlitligt än att anta att alla lokala installationer använder samma värde.
Om du inte kan ansluta behöver du kontrollera konfigurationen eller startkommandot där PostgreSQL körs. Klienten kan också ha en egen standardinställning: miljövariabeln PGPORT används som portvärde av PostgreSQL-verktyg när inget annat anges. Ange därför porten uttryckligen vid felsökning, till exempel med psql -h localhost -p 5433 -U postgres.
För lokal utveckling är en annan värdport ett enkelt sätt att köra flera databaser samtidigt. I Docker-exemplet ovan ansluter datorns klient till localhost:5433, medan en app-container på samma nätverk använder tjänstenamnet och 5432.
Välj anslutningsadress efter var appen körs
När porten är känd återstår frågan varifrån klienten ansluter. En app på samma dator kan ofta använda localhost; en app i en annan container behöver vanligtvis databasens tjänstenamn; en app på en annan maskin behöver serverns nåbara nätverksadress. Samma portnummer kan alltså vara rätt i ett fall och fel i ett annat.
Om PostgreSQL bara ska användas lokalt, bind publiceringen till loopback-adressen 127.0.0.1 i stället för att göra porten tillgänglig på alla nätverksgränssnitt. Då blir utvecklingsdatabasen inte automatiskt nåbar från andra enheter som kan nå datorn. Börja med rätt anslutningsväg och kontrollera sedan porten; det brukar snabbt visa om felet ligger i klientens inställningar eller i servern.