MySQL localhost í gegnum VPN: það þýðir enn staðbundna ferlið
Gagnagrunnurinn sem forritið kallar localhost er á þjóninum, ekki á fartölvunni þinni. Notaðu einkahlustarann eða SSH-framsendingu og þvingaðu síðan biðlarann yfir á TCP.
Forritið á skrifstofuþjóninum tengist MySQL á localhost, þú afritar þetta hýsilnafn í skjáborðsbiðlara, og tengingin mistekst eða opnar annan gagnagrunn. VPN breytti engu um merkingu orðsins: localhost vísar enn til vélarinnar sem keyrir biðlarann. VPN færði pakka, ekki viðmót. Ákveddu hvaða endapunkt fartölvan á að ná áður en þú snertir leið.
Skref 1: ákveddu hvaða endapunkt fartölvan á að ná
Báðar hönnunin eru lögmætar og svara ólíkum spurningum. Beinn aðgangur þýðir að gagnagrunnurinn hlustar á einkaaðsetur sem göngin ná til, og fartölvan tengist því aðsetri. Framsendur aðgangur þýðir að gagnagrunnurinn verður á loopback og SSH-lotur ber portið að vélinni þinni. Veldu eitt af ásetningi, því blanda þeim saman gefur tengingu sem virkar af rangri ástæðu.
Fyrir beinan aðgang skaltu fá eigið einkanafn eða aðsetur gagnagrunnshýsilsins og portið hans hjá þeim sem stýrir honum. Aðsetur VPN-gáttarins er ekki aðsetur gagnagrunnsins nema það sé sama vélin. Staðfestu síðan að hlustarinn sé raunverulega bundinn við það viðmót, því leið að viðmóti býr ekki til hlustara á því.
Skref 2: framsendu portið aðeins ef hlustarinn verður staðbundinn
Ef gagnagrunnurinn á að vera aðeins á loopback skaltu framsenda hann um SSH og binda staðbundna endann við loopback líka. Bindiaðsetrið til vinstri tilheyrir fartölvunni þinni; markið til hægri er túlkað frá hlið SSH-þjónsins, eins og OpenSSH-tilvísunin lýsir. Að snúa þessum tveimur hlutverkum við er venjulega ástæðan fyrir því að framsending virðist virka en tengist engu.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:13306:127.0.0.1:3306 [email protected]
ss -ltn 'sport = :13306'
Ef SSH lendir á stökkshýsli í stað gagnagrunnshýsilsins vísar loopback til hægri til stökkshýsilsins, og markið verður að breytast í aðsetur sem sá hýsill nær. ExitOnForwardFailure grípur mistök við að koma framsendingunni á fót, en sannar ekki að síðari tengingar við markið takist. Hafðu hýsillyklastýringu áfram kveikta, og bjóddu ekki framsendingarportið öllu LAN-inu þínu með því að binda það við öll viðmót.
Stoppaðu ef gagnagrunnurinn verður að vera aðeins á loopback og þú getur ekki notað SSH. Þá er beinn aðgangur röng hönnun, ekki stilling sem á að þvinga.
Skref 3: þvingaðu biðlarann yfir á TCP
Á Unix velur MySQL-biðlari sem fær localhost Unix-socket sjálfgefið, svo að breyta aðeins portinu getur látið hann leita að socket sem hefur ekkert með framsendinguna þína að gera. Notaðu skýra TCP-samskiptaregluna og loopback-aðsetrið svo biðlarinn opni tengingu við framsendingarportið þitt.
mysql --protocol=TCP --host=127.0.0.1 --port=13306 --user=DB_USER --password
Lykilorðsvalið án gildis spyr í stað þess að setja leyndarmálið á skipanalínuna, og það er venjan sem er þess virði að halda. Önnur verkfæri hafa sinn eigin rofa fyrir sama aðgreiningu, og sumir reklar meðhöndla localhost líka sérstaklega. Athugaðu hvað biðlarinn þinn gerir í stað þess að gera ráð fyrir að flaggið hafi borist. Gagnagrunnsreikningurinn þarf líka heimild sem passar við upprunann sem þjónninn sér, og það er framsendingarhýsillinn, ekki fartölvan þín.
Stoppaðu ef ekki er hægt að þvinga verkfærið yfir á TCP. Notaðu þá annan biðlara, eða beinan aðgang að einkahlustaranum.
Skref 4: sannaðu hvaða endapunkt þú náðir í raun
Spurðu þjóninn hvað hann heldur að tengingin sé. Breyturnar fyrir hýsilnafn, port og socket segja þér hvort þú komst yfir TCP og hvaða hlustari svaraði, og tengingalistinn sýnir upprunaaðsetrið sem þjónninn skráði. Þessar sannanir eru gagnlegri en önnur leiðarbreyting.
mysql --protocol=TCP -h 127.0.0.1 -P 13306 -u DB_USER -p -e "SELECT @@hostname, @@port, @@socket"
Skráðu hvaða endapunkt þú reyndir: staðbundið Unix-socket, framsendingarportið þitt eða einkahlustarann. Þessi þrjú mistök hafa ólíkar lagfæringar, og að breyta VPN-leiðinni á meðan biðlarinn talar enn við rangt localhost er sóað átak. Hafðu SSH-auðkenningu og gagnagrunnsauðkenningu líka aðskildar í athugasemdunum, því mistök í annarri líta út eins og mistök í hinni frá skjáborðsbiðlara. Fjarlægðu síðan framsendinguna þegar þú ert búinn.
Gátlistinn endar þegar þú getur nefnt endapunktinn, samskiptareglu biðlarans, upprunaaðsetrið sem þjónninn sá og heimildina sem leyfði það. Fjórar staðreyndir, og næsta tengingarvandamál tekur mínútur í stað heils síðdegis.