Heim
» Grundvallarþekking
»
Hvernig á að laga PostgreSQL tenging hafnað á localhost port 5432
Hvernig á að laga PostgreSQL tenging hafnað á localhost port 5432
Ef PostgreSQL segir “connection refused” á localhost:5432, er fyrsta hlutinn að laga aðgengi, ekki lykilorðið. Keyrðu pg_isready -h localhost -p 5432. Ef það skilar no response, er PostgreSQL yfirleitt stöðvað, hlustar á annað port eða netfang, keyrir í öðru umhverfi eins og Docker, eða mistekst við ræsingu. Ef það skilar accepting connections, er þjónninn aðgengilegur og þú ættir að hætta að meðhöndla vandamálið sem port-höfnunarvandamál og rannsaka næstu villuskilaboð í staðinn.
PostgreSQL notar TCP port 5432 sjálfgefið, og núverandi PostgreSQL 18 skjölun segir að listen_addresses sé sjálfgefið localhost. Frá og með 11. september 2026 er PostgreSQL 18 núverandi stöðug meginútgáfa, með PostgreSQL 18.6 gefið út þann 13. ágúst 2026; PostgreSQL 19 Beta 3 er enn þróunarútgáfa. Vandamálsúrræðaleitarleiðirnar hér að neðan eiga við um breitt úrval af studdum PostgreSQL útgáfum, en pakkanöfn, þjónustunöfn og staðsetningar skráa eru mismunandi eftir stjórnkerfi og uppsetningarforriti. Sjá opinbera PostgreSQL 18.6 útgáfu tilkynninguna og núverandi skjölun tengistillinga.
AI-búin myndskreyting: Höfnun þýðir að biðlarinn gat ekki stofnað væntanlega TCP tengingu við PostgreSQL á því hýsilnetfangi og port. Terminalinn er til skýringar, ekki fangaður seta.
1. Staðfestu að villan sé í raun “Connection Refused”
Byrjaðu á nákvæmum texta villuskilaboðanna. Fleiri PostgreSQL tengivillur hljóma eins en benda á mismunandi lög í staflinum.
Mynstur skilaboða
Hvað segir það yfirleitt
Hvar á að leita áfram
connection refused
TCP tengingin náði ekki til PostgreSQL hlustara á því netfangi og port
Rangt hýsilnetfang, eldveggur, ílát/VM mörk, þjónn ekki tiltækur
password authentication failed
Þú náðir til PostgreSQL og auðkenning hófst
Notandi, lykilorð, auðkenningaraðferð
no pg_hba.conf entry
Þú náðir til PostgreSQL, en engin samsvarandi biðlara-auðkenningarregla leyfði tilraunina
pg_hba.conf
database ... does not exist
Þjónninn er aðgengilegur og auðkenningin náði nógu langt til að auðkenna gagnagrunnsbeiðnina
Gagnagrunnsnafn og tengistrengur
Þessi greiningu kemur í veg fyrir algenga afvegaleiðingu: að breyta lykilorðum eða pg_hba.conf þegar ekkert hlustar á port 5432. Þessar stillingar skipta máli eftir að tenging nær til PostgreSQL þjónsins.
2. Keyrðu pg_isready gegn nákvæmu hýsilnetfangi og port
pg_isready er tengistatusverkfæri PostgreSQL sjálfs. Keyrðu:
pg_isready -h localhost -p 5432
PostgreSQL skjalleggur fjögur útgáfuástand: 0 þegar þjónninn tekur við tengingum, 1 þegar hann hafnar tengingum, 2 þegar engin svörun kemur, og 3 þegar engin gild tilraun var gerð. Þú þarft ekki rétt gagnagrunnsnafn, notandanafn eða lykilorð bara til að fá grunnþjónustustöðu. Sjá opinbera pg_isready tilvísun.
AI-búin myndskreyting: Athugaðu hvort PostgreSQL þjónustan eða þjónsferlið sé í raun keyrandi. Búna þjónustunafnið og útgáfunúmerið eru dæmi; notaðu nafnið sem er uppsett á vélinni þinni.
Ef þú færð:
localhost:5432 - accepting connections: port 5432 er aðgengilegt. Prófaðu raunverulega psql eða forritstengingu og leystu nýju skilaboðin ef þær mistakast.
localhost:5432 - rejecting connections: þjónninn svaraði en tekur ekki við venjulegum tengingum ennþá, sem getur komið fram við ræsingu eða endurheimt. Athugaðu þjónaloggann og bíddu ef ræsing er í gangi.
localhost:5432 - no response: haltu áfram með þjóns- og hlustaraathuganir hér að neðan.
Prófaðu einnig 127.0.0.1 sérstaklega:
pg_isready -h 127.0.0.1 -p 5432
Ef 127.0.0.1 virkar en localhost ekki, er vandamálið líklegra tengt nafnlausn eða IPv4/IPv6 bindingu heldur en að PostgreSQL sé alveg niðri.
3. Gakktu úr skugga um að PostgreSQL þjónninn sé keyrandi
Ef þú settir upp PostgreSQL í gegnum stjórnkerfis pakka eða uppsetningarforrit, notaðu venjulega þjónustustjórnunarferli pakkans. Skjölun PostgreSQL sjálfs mælir með því að nota pakkaða ræsingarinnviði þegar tiltækir eru heldur en að finna upp aðskilda ræsingaraðferð.
Ef þú stjórnar klöstrunni beint og veist hvað gagnamappan er, býður PostgreSQL upp á pg_ctl:
pg_ctl status -D /path/to/data
pg_ctl start -D /path/to/data -l /path/to/postgresql.log
-D gildið verður að vísa á rétta PostgreSQL gagnamöppu, sem er möppan fyrir þann gagnaklöstra. Ef PGDATA er stillt, getur pg_ctl notað það í staðinn. Opinbera pg_ctl skjölunin lýsir status, start, restart og reload.
AI-búin myndskreyting: Ræstu raunverulega PostgreSQL tilvikið sem á umhaldandi gagnamöppuna þína. Sýnt þjónustunafn er til skýringar og getur verið mismunandi eftir stjórnkerfi, uppsetningarforriti og PostgreSQL útgáfu.
Windows
Opnaðu Services og leitaðu að PostgreSQL þjónustunni sem uppsetningarforritið þitt bjó til. Ef hún er stöðvuð, ræstu hana. Ef fleiri en ein PostgreSQL útgáfa er uppsett, staðfestu að þú sért að ræsa tilvikið sem tengist gagnamöppunni og portinu sem forritið þitt væntir.
Linux
Pakkanöfn eru mismunandi milli dreifinga. Pakkuð uppsetning getur birt kerfisþjónustu eins og postgresql eða útgáfu/klöstru-sértækan einingu. Notaðu þjónustuskilgreiningu pakkans heldur en að gera ráð fyrir einu almennum þjónustunafni.
macOS
Rétta ræsingaraðferðin fer eftir því hvort PostgreSQL kom frá app bundle, Homebrew, MacPorts, source eða öðrum pakka. Sama meginreglan gildir: ræstu tilvikið frá ferlinu sem bjó það til, keyrðu síðan pg_isready aftur.
Ef þjónninn stöðvast strax aftur, ekki halda áfram að endurræsa hann. Skoðaðu ræsingarlogga hans. Slæmt stillingargildi, óaðgengileg gagnamappa, portárekstur, vantar skrá eða endurheimtarvandamál geta komið í veg fyrir að PostgreSQL haldist keyrandi.
4. Staðfestu að eitthvað sé í raun að hlusta á port 5432
Keyrandi PostgreSQL ferli er ekki nóg ef það er bundið við annað port eða aðeins við Unix-domain socket. Athugaðu hlustarataflu stjórnkerfisins.
AI-búin myndskreyting: Staðfestu að hlustari sé til staðar á netfanginu og portinu sem biðlarinn reynir að ná til. Skipanalínúttak er mismunandi eftir stjórnkerfi.
Ef enginn hlustari er til staðar, er annaðhvort PostgreSQL ekki keyrandi, notar annað port, er bundið annars staðar, eða mistókst að ræsast. Ef annað forrit á port 5432, getur PostgreSQL verið ófært um að binda það port. Athugaðu ræsingarlogga PostgreSQL áður en þú ákveður hvort þú ætlir að stöðva hitt ferlið eða færa PostgreSQL á annað port.
Ef þú stilltir viljandi PostgreSQL á 5433, til dæmis, verður biðlarinn þinn að nota 5433:
psql -h localhost -p 5433 -U postgres
Ekki “laga” viljandi ekki-sjálfgefið port með því að breyta PostgreSQL aftur á 5432 nema það sé í raun óskileg arkitektúr þín.
5. Athugaðu postgresql.conf: listen_addresses og port
listen_addresses stilling PostgreSQL stjórnar hvaða TCP/IP viðmót taka við tengitilraunum. Skjalað sjálfgefið er localhost. port stillingin er sjálfgefið 5432. Báðar stillingar eru beittar við þjónsræsingu, svo breytingar krefjast þjónsendurræsingar.
AI-búin myndskreyting: Fyrir eingöngu staðbundinn gagnagrunn eru localhost og port 5432 dæmigerð gildi. Ekki víkka listen_addresses út á öll viðmót nema fjarlægur aðgangur sé viljandi og öruggur.
Fyrir stranglega staðbundinn þróunargagnagrunn, líta viðeigandi stillingar oft svona út:
listen_addresses = 'localhost'
port = 5432
Ef listen_addresses er tómt strengur, hlustar PostgreSQL ekki á neitt IP viðmót og aðeins Unix-domain sockets eru notuð þar sem stutt er. Öfugt, að stilla listen_addresses = '*' biður PostgreSQL um að hlusta á öll tiltæk viðmót; það er yfirleitt óþarfi fyrir localhost-eingöngu þróunargagnagrunn og getur aukið útsetningu ef auðkenning og eldveggjarreglur eru ekki hannaðar fyrir fjarlægann aðgang.
Ef þú getur tengst í gegnum Unix-domain socket en TCP á localhost mistekst, fyrirspyrðu lifandi þjóninn til að finna virkar skrár og stillingar:
SHOW config_file;
SHOW hba_file;
SHOW listen_addresses;
SHOW port;
Þetta er öruggara en að breyta fyrstu postgresql.conf sem þú finnur, sérstaklega á vél með fleiri klöstrum eða PostgreSQL útgáfum. PostgreSQL styður stillingarskrár utan gagnamöppunnar, svo skráarleiðir eru ekki almennt gildar. Sjá opinbera skjölun um staðsetningu stillingarskráa.
6. Ef PostgreSQL keyrir í Docker, “localhost” fer eftir því hvar biðlarinn keyrir
Ílátanetkerfi breytir merkingu hýsilnetfangsins. Þetta er ein algengasta ástæðan fyrir því að gagnagrunnur sé heilbrigður en forritið fær samt tenging hafnað.
Forrit keyrir á hýsilvélinni
PostgreSQL ílátið þarf birt hýsilport. Compose þjónusta gæti innihaldið:
Inni í forritsílátinu vísar localhost til þess forritsíláts sjálfs, ekki gagnagrunnsílátsins. Docker Compose veitir þjónustunafns DNS, svo ef gagnagrunnsþjónustan heitir db, tengist forritið yfirleitt við:
Opinber Compose netkerfisskjölun Docker greinir sérstaklega á milli ílát-til-ílat þjónustunafns og birts hýsilports. Til dæmis, ef þú kortleggur 8001:5432, nota ílát ennþá db:5432, en hýsilvélin notar localhost:8001. Sjá opinbera Docker Compose netkerfisleiðbeiningar.
Áður en þú breytir PostgreSQL sjálfu, athugaðu:
docker compose ps
docker compose logs db
Ef ílátið er að endurræsa, er loggin yfirleitt verðmætari en að breyta tengistrengjum endurtekið.
7. Meðhöndlaðu eldveggjarreglur sem síðari athugun fyrir localhost höfnun
AI-búin myndskreyting: Eldveggur og öryggisreglur á endapunkti geta skipt máli, en fyrir localhost tengingu á sömu vél eru þær yfirleitt síðari athugun eftir þjónustustöðu, portbindingu og ílátakortlagningu.
Fyrir biðlara og þjón á sömu vél, ekki byrja á að opna port 5432 fyrir allt netkerfið. Staðfestu fyrst að PostgreSQL hlusti staðbundið. Víð eldveggjarregla getur skapað óþarfa útsetningu án þess að laga stöðvaðan þjón.
Eldveggjarannsókn verður viðeigandi þegar:
PostgreSQL er í VM, ílátahýsli, WSL umhverfi eða öðru netkerfisrými.
Þú breyttir listen_addresses til að leyfa ekki-loopback tengingar.
Staðbundið öryggisforrit beitir reglum á loopback eða forritsferli.
Hlustarinn er til staðar og virkar frá einu umhverfi en ekki öðru.
Ef fjarlægur aðgangur er viljandi, takmarkaðu leyfileg upprunanetkerfi og auðkenningarreglur við það sem er í raun krafist. Að port 5432 sé aðgengilegt frá öllum stöðum er ekki forsenda fyrir staðbundið forrit.
8. Ekki breyta pg_hba.conf fyrr en þjónninn er aðgengilegur
pg_hba.conf stjórnar PostgreSQL biðlara-auðkenningu. host færsla á við um TCP/IP tengingar. Hún veldur ekki því að stöðvaður þjónn byrji að hlusta, svo hún er yfirleitt röng fyrsta lausn fyrir connection refused.
Þegar pg_isready skilar að þjónninn taki við tengingum, getur auðkenningarvilla leitt þig réttilega að pg_hba.conf. Fyrir localhost TCP tengingar, eru reglur yfirleitt takmarkaðar við loopback netföng eins og 127.0.0.1/32 og ::1/128, með gagnagrunni, hlutverki og auðkenningaraðferð valin fyrir umhverfið þitt.
PostgreSQL 18 stillir password_encryption sjálfgefið á scram-sha-256, og skjölun þess merkir MD5-dulkóðuð lykilorð sem úrelt. Forðastu að afrita gamlar auðkenningardæmi blindlega. Sjá núverandi pg_hba.conf skjölun og núverandi auðkenningastillingar.
Á Unix-líkum kerfum, getur endurhleðsla á pg_hba.conf breytingum verið gerð með pg_ctl reload eða SELECT pg_reload_conf();. PostgreSQL skjalleggur Windows-sértækan mun: breytingar á pg_hba.conf eru beittar á næstu nýjar tengingar án sömu SIGHUP kröfu.
9. Prófaðu með psql eftir að hlustarinn er heilbrigður
AI-búin myndskreyting: Vel heppnaður psql prompt er gagnleg end-to-end athugun að þjónninn sé aðgengilegur og að gefnu tengistillingarnar hafi staðist auðkenningu. Sýnd útgáfa er til skýringar.
Þegar pg_isready segir að þjónninn taki við tengingum, prófaðu sömu leið og forritið þitt væntir:
psql -h localhost -p 5432 -U postgres -d postgres
Vel heppnaður psql prompt segir þér miklu meira en “þjónustan er keyrandi”: hann staðfestir að raunverulegur PostgreSQL biðlari náði til þjónsins og stóðst tengingar- og auðkenningarstig fyrir þessar stillingar.
Ef psql virkar en forritið þitt skilar samt tenging hafnað, berðu saman forritsskilgreininguna staf fyrir staf:
Hýsilnetfang
Port
Gagnagrunnsnafn
Notandanafn
Hvort forritið keyri á hýsilvélinni, í Docker, í VM eða í öðru umhverfi
Umhverfisbreytur sem raunverulegt keyrandi ferli hleður
Hvort forritið var endurræst eftir að tengistrengurinn breyttist
Algengt dæmi er staðbundin terminal sem notar localhost:5432 vel en Dockerized vefapp notar líka localhost:5432. Vefappið er þá að hringja í sjálft sig, ekki gagnagrunnsþjónustuna. Í því tilviki er að breyta gagnagrunnshýsilnetfangi ílátsins í Compose þjónustunafn viðeigandi lausn.
10. Lestu þjónaloggann ef PostgreSQL vill ekki halda sér keyrandi
Ef þjónustan ræst og hættir strax, er netkerfisvillan aðeins einkenni. Ræsingarloggin er þar sem PostgreSQL útskýrir hvers vegna það gat ekki orðið tilbúið.
Leitaðu að skilaboðum um:
Netfang eða port nú þegar í notkun
Ógild postgresql.conf setningafræði
Vantar eða óaðgengileg gagnamappa
Skráaeiganda- eða leyfisvandamál
Endurheimt eða WAL vandamál
Ósamhæf gagnamappa og þjóns meginútgáfa
Ef þú ræsir beint stjórnaða klöstru með pg_ctl, mælir PostgreSQL með því að taka upp þjónsúttak, til dæmis með -l logfile. Skjölun um þjónsræsingu verkefnisins útskýrir hvers vegna ræsingarúttak er gagnlegt fyrir greiningu.
AI-búin myndskreyting: Þegar augljósa lausnin virkar ekki, berðu saman raunverulegt hýsilnetfang, port, keyrandi tilvik, Docker kortlagningu, logga og tengistreng heldur en að breyta ótengdum stillingum.
Hraðgreining eftir aðstæðum
Aðstaða
Nýtasta fyrsta athugun
Líkleg átt
Ný staðbundin uppsetning; 5432 hafnar
pg_isready -h localhost -p 5432
Þjónustan gæti ekki hafa ræst eða notað annað port
Virkjaði í gær; vélin endurræst
Þjónustustaða og PostgreSQL loggi
Þjónustan ræstist ekki sjálfkrafa eða ræsing mistekst nú
psql á hýsli virkar; Docker app mistekst
Skoðaðu forrits tengihýsilnetfang
Notaðu Compose þjónustunafn í stað localhost inni í ílátinu
Unix socket virkar; -h localhost mistekst
SHOW listen_addresses; og SHOW port;
TCP hlustari er óvirkur eða bundinn öðruvísi
5432 hefur hlustara, en það er ekki PostgreSQL
Auðkenna ferlið sem á portinu
Leystu portáreksturinn eða notaðu stillt port PostgreSQL
Villa breyttist í lykilorðsvillu
Hættu að breyta netkerfisstillingum
Aðgengi er lagað; rannsakaðu auðkenningu
Villa breyttist í no pg_hba.conf entry
Skoðaðu samsvarandi HBA reglur
Aðgengi er lagað; rannsakaðu biðlaraheimild
Algengar lausnir sem geta versnað aðstæðurnar
Að stilla listen_addresses á '*' án ástæðu
Þetta getur gert PostgreSQL aðgengilegt frá fleiri viðmótum, en það er ekki nauðsynlegt fyrir venjulega localhost tengingu á sömu vél. Það getur einnig víkkað útsetningu. Notaðu þrengstu bindinguna sem passar við arkitektúr þinn.
Að opna port 5432 fyrir allt netkerfið
Eldveggjarundantekning getur ekki látið stöðvað PostgreSQL ferli hlusta. Staðfestu hlustarann fyrst, bættu síðan aðeins við netkerfis aðgangi sem þú þarft í raun.
Að endurstilla postgres lykilorðið fyrir tengingarhöfnun
Lykilorðsauðkenning á sér stað eftir að biðlarinn nær til PostgreSQL. Ef TCP tengingin er hafnað, er að breyta lykilorðinu yfirleitt að meðhöndla rangt lag.
Að breyta rangri postgresql.conf
Vélar með fleiri en eina uppsetningu geta innihaldið fleiri en eina stillingarskrá. Notaðu, þegar mögulegt er, virka staðbundna socket tengingu og SHOW config_file;, eða auðkenndu gagnamöppu þjónsferlisins sem þú ætlar í raun að keyra.
Að gera ráð fyrir að 5432 sé skylda
5432 er sjálfgefið, ekki krafa. Ef klöstrin þín er stillt á 5433 og allir biðlarar nota 5433, er það gilt. Samræmi skiptir meira máli en að þvinga sjálfgefið gildi.
Hvenær þú ættir að breyta vandamálsúrræðaleitar aðferðinni
Þú ættir að hætta að vinna á “connection refused” sérstaklega þegar pg_isready skilar að tengingar séu teknar við eða psql nær auðkenningar/gagnagrunns villu. Á því stigi er netkerfishlustarinn að vinna starf sitt, og að halda áfram að breyta portum, eldveggjarreglum eða listen_addresses getur kynnt ný vandamál.
Eins, ef PostgreSQL getur ekki ræst, skiptu úr biðlarahliðar vandamálsúrræðaleit yfir í þjónsræsingargreiningu. Ef ílát endurræsir stöðugt, farðu yfir í ílátaloggann. Ef hýsilbiðlari virkar en ílátabiðlari mistekst, farðu yfir í ílát DNS og portakortlagningu. Gagnlegi spurningin er ekki “Hvaða PostgreSQL stillingu ætti ég að víxla?” heldur “Á hvaða lagi stoppar tengingin að framfara?”
Hvernig vel heppnuð lausn lítur út
Þú getur talið localhost aðgengisvandamálið lagað þegar allt eftirfarandi er satt fyrir umhverfið sem þú notar í raun:
pg_isready -h localhost -p 5432 skilar accepting connections, eða það skilar jafngildu hýsilnetfangi/porti sem þú stilltir viljandi.
Stjórnkerfið sýnir PostgreSQL hlusta á væntanlegt netfang og port.
psql getur náð til þjónsins með sömu netkerfisleið og forritið.
Forritið þitt fær ekki lengur connection refused.
Ef önnur PostgreSQL villa kemur fram, rannsakaðu þá nýju villu sérstaklega heldur en að halda áfram að breyta hlustaranum.
Mörk þessarar aðferðar eru mikilvæg: hún greinir hvort PostgreSQL þjónn sé aðgengilegur á væntanlegu hýsilnetfangi og port. Hún getur ekki ein og sér lagað ógilt lykilorð, vantar hlutverk, vantar gagnagrunn, SQL villu, skema vandamál eða forrits tengingarhóps villu. Þau verða viðeigandi aðeins eftir að tengingin kemst fram hjá höfnunarstiginu.
Fyrir flest localhost tilfellum, er stysta leiðin ennþá sú sama: prófaðu 5432 með pg_isready, staðfestu að ætlaða PostgreSQL tilvikið sé keyrandi, staðfestu hlustarann, og breyttu aðeins síðan stillingum. Þessi röð heldur vandamálsúrræðaleitinni afmarkaðri og minnkar líkurnar á að breyta einföldu stöðvaðri þjónustuvandamáli í stærra netkerfis- eða öryggisvandamál.