Báðir biðlararnir eru á sama fartölvu, fara í gegnum sama göngin, og aðeins annar þeirra tengist. Sá samanburður virðist sanna að VPN-ið sé valið, en mun algengari skýringin er að biðlararnir tveir stefna á mismunandi áfangastaði. GUI heldur sínum eigin hýsil, porti, hlutverki og TLS-stillingum og byggir hljóðlega SSH-framleiðslu þegar þarf, á meðan psql setur saman tengingu úr sjálfgefnum libpq-gildum sem skeljin þín kann að hafa þegar stillt. Að endurgera tenginguna sem virkar snýst um að lesa stillingar GUI-sins, ekki að setja göngin upp að nýju.

Goðsögnin: einn virkur biðlari sannar leiðina

Ef GUI tengist flytur göngin umferð, og það er það eina sem GUI sannar. Það segir ekkert um hvaða vistfang psql leysir, með hvaða hlutverki það auðkennir sig, eða hvort sambandið sem það opnar fari nokkurn tíma út af vélinni. Leiðin er sameiginleg; færibreyturnar ekki.

Staðbundin framleiðsla eykur bilið. GUI getur tengst 127.0.0.1 á porti sem það framleiddi yfir SSH, og sá hlustandi er aðeins til á meðan GUI-lotunni stendur. psql sem beint er að localhost án framleiðslunnar fær hafnaða tengingu sem hefur ekkert með VPN-ið að gera.

Lestu áfangastaðinn sem GUI notar í raun

Opnaðu eiginleika tengingarinnar og afritaðu fjögur gildi: hýsil, port, gagnagrunn og hlutverk. Leitaðu svo að flipa um göngin, því SSH-framleiðsla breytir einkavistfangi í staðbundið port og breytir því sem segja þarf við psql.

SettingWhat the GUI holdsWhat psql uses when the value is absent
DestinationA saved hostname, sometimes behind a forwardA local Unix socket, not the remote endpoint
PortThe direct port or a forwarded local port5432, or the port from a service file
Role and databaseStored per connection profileYour operating-system user name
TLS identityIts own CA bundle and verification modeWhatever PGSSLMODE or the service file says
Startup filesNot read at allRead unless -X is passed

Hver röð mistekst á öðru lagi, og skilaboðin sem þú færð nefna það lag. Að líma vingjarnlegt heiti vistuðu prófílsins inn í psql ber ekkert af gildunum hér að ofan, og þjónustuheiti er leyst í gegnum skrá sem skjáhermirinn les kannski aldrei.

Hvað libpq erfur frá skelinni þinni

psql er þunnur biðlari ofan á libpq, og libpq les umhverfið áður en það les hvað sem er annað. Breytur eins og PGHOST, PGHOSTADDR, PGPORT, PGDATABASE, PGUSER, PGSERVICE og PGSSLMODE geta hver um sig beint hluta tengingarinnar annað. Þær eru erfðar frekar en slegnar inn, svo ekkert í skipuninni sem þú keyrðir sýnir þær. Útflutt PGSSLMODE getur líka breytt því sem biðlarinn samþykkir án orðs á skipanalínunni.

Tvær þessara breytna eiga fyrst skilið grun. PGHOSTADDR gefur tölulegan áfangastað sem hnekkir heitiupplausn á meðan hýsilheitið ræður enn auðkenni vottorðsins, og PGSERVICE dregur hýsil, gagnagrunn og TLS-val úr þjónustuskrá. Að hella öllu umhverfinu út til að kemba þetta er slæm venja, því það getur innihaldið lykilorð og ótengd tóken; veldu frekar breyturnar sem þér þykir máli skipta.

Að sleppa bæði host og hostaddr velur Unix-lénssamband í stað netvistfangs. psql-kall án -h getur því tekist staðbundið, eða mistekist með sambandsvillu, án að hafa nokkurn tíma snert leiðina sem GUI notar.

Sendu sömu færibreyturnar handvirkt

Með gildi GUI-sins í höndunum, sendu þau berum orðum og slepptu ræsingarskránni sem gæti bætt við hnekkingum. Tengistrengurinn hér að neðan er sýnishorn: skiptu áfangastaðnum, portinu, gagnagrunninum og hlutverkinu út fyrir gildin sem stjórnandinn þinn samþykkti, og haltu trauststillingunni sem virkar þegar.

psql -X "host=db.internal.example port=6432 dbname=orders user=report_ro sslmode=verify-full connect_timeout=5"

Þrjú atriði í þeirri skipun eru viljandi. -X bælir ræsingarskrá psql, þótt það bæli ekki umhverfi libpq eða þjónustuskilgreiningu. connect_timeout=5 kemur í veg fyrir að leið út í tómið láti skjáherminn hanga í mínútur. sslmode=verify-full heldur vottorðs- og hýsilheitaprófunum kveiktum, sem er einmitt sá hluti sem fólk slokknar á þegar TLS-villa birtist.

Ef samþykkti áfangastaðurinn er bak við pooler geta port 6432 og port 5432 náð sömu gögnum í gegnum mismunandi auðkenni þjóns, og sannprófunin getur mistekist á heiti poolersins frekar en gagnagrunnsins. Lagaðu heitið í tengistrengnum í stað þess að veikja haminn.

Láttu villuskilaboðin velja næsta skref

Texti mistakans segir hversu langt tilraunin komst, og það fellow betra en hvaða gisk sem er um göngin. Heiti sem leysist ekki mistekst áður en samband verður til, tímamörk þýða að leiðin eða eldveggur henti pökkum, höfnun þýðir að eitthvað svaraði og neitaði, og auðkenningarvilla þýðir að netið virkaði þegar.

psql -X -w "host=db.internal.example port=6432 dbname=orders user=report_ro sslmode=verify-full connect_timeout=5" -c '\conninfo'
env | grep -E '^PG'
psql --version

Berðu saman úttak \conninfo við lifandi lotu GUI-sins: sami hýsill, sama port, sama hlutverk, sama TLS-staða. Þegar þessi fjögur stemma, hefur VPN-ið ekkert eftir að útskýra. Þangað til þau stemma er hver viðbótargöngubreyting gisk um tengingu sem skjáhermirinn gerði aldrei.

Tengdir greinar