MySQL localhost përmes një VPN: prapë do të thotë procesi lokal
Baza e të dhënave që aplikacioni e quan localhost është në server, jo në laptopin tuaj. Përdorni dëgjuesin privat ose një përcjellje SSH, pastaj detyrojeni klientin në TCP.
Aplikacioni në serverin e zyrës lidhet me MySQL në localhost, ju kopjoni atë emër hosti në një klient desktopi, dhe lidhja ose dështon ose hap një bazë tjetër të dhënash. VPN nuk ndryshoi asgjë në kuptimin e fjalës: localhost vazhdon të tregojë makinën që ekzekuton klientin. VPN zhvendosi paketa, jo ndërfaqe. Vendosni cilin pikë fundore duhet të arrijë laptopi përpara se të prekni një rrugë.
Hapi 1: vendosni cilin pikë fundore duhet të arrijë laptopi
Të dyja modelet janë legjitime dhe përgjigjen pyetjeve të ndryshme. Qasja e drejtpërdrejtë do të thotë që baza e të dhënave dëgjon në një adresë private që e arrin tuneli, dhe laptopi lidhet me atë adresë. Qasja e përcjellë do të thotë që baza mbetet në loopback dhe një sesion SSH e çon portin në makinën tuaj. Zgjidhni njërën me qëllim, sepse përzierja e tyre prodhon një lidhje që funksionon për arsyen e gabuar.
Për qasjen e drejtpërdrejtë, merrni emrin ose adresën private të vetë hostit të bazës dhe portin e tij nga kushdo që e administron. Adresa e portës së VPN nuk është adresa e bazës, përveçse kur është e njëjta makinë. Pastaj konfirmoni që dëgjuesi është vërtet i lidhur me atë ndërfaqe, sepse një rrugë drejt një ndërfaqeje nuk krijon dëgjues mbi të.
Hapi 2: përcillni portin vetëm nëse dëgjuesi mbetet lokal
Nëse baza e të dhënave duhet të mbetet vetëm në loopback, përcilleni përmes SSH dhe lidhni edhe skajin lokal me loopback. Adresa e lidhjes në të majtë i përket laptopit tuaj; objektivi në të djathtë interpretohet nga ana e serverit SSH, siç përshkruan referenca e OpenSSH. Ndërrimi i këtyre dy roleve është arsyeja e zakonshme pse një përcjellje duket se funksionon, por nuk lidhet me asgjë.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:13306:127.0.0.1:3306 [email protected]
ss -ltn 'sport = :13306'
Nëse SSH zbret në një host kërcimi në vend të hostit të bazës, loopback-u në të djathtë i referohet hostit të kërcimit, dhe objektivi duhet të ndryshojë në një adresë që ai host e arrin. ExitOnForwardFailure kap një dështim në vendosjen e përcjelljes, por nuk provon që lidhjet e mëvonshme me objektivin kanë sukses. Mbani aktiv kontrollin e çelësit të hostit dhe mos e ofroni portin e përcjelljes gjithë LAN-it tuaj duke e lidhur me të gjitha ndërfaqet.
Ndaleni nëse baza e të dhënave duhet të mbetet vetëm në loopback dhe nuk mund të përdorni SSH. Atëherë qasja e drejtpërdrejtë është modeli i gabuar, jo një konfigurim që duhet imponuar.
Hapi 3: detyrojeni klientin në TCP
Në Unix, një klient MySQL që merr localhost zgjedh si parazgjedhje një socket Unix, prandaj ndryshimi vetëm i portit mund ta lërë duke kërkuar një socket që nuk ka lidhje me përcjelljen tuaj. Përdorni protokollin eksplicit TCP dhe adresën loopback që klienti të hapë një lidhje me portin tuaj të përcjelljes.
mysql --protocol=TCP --host=127.0.0.1 --port=13306 --user=DB_USER --password
Opsioni i fjalëkalimit pa vlerë pyet në vend që ta vendosë sekretin në rreshtin e komandës, dhe ky është zakoni që ia vlen të mbahet. Mjetet e tjera kanë çelësin e tyre për të njëjtin dallim, dhe disa drejtues e trajtojnë localhost gjithashtu në mënyrë të veçantë. Kontrolloni çfarë bën klienti juaj në vend që të supozoni se flamuri u transferua. Llogaria e bazës ka nevojë edhe për një leje që përputhet me burimin që sheh serveri, dhe ai është hosti i përcjelljes, jo laptopi juaj.
Ndaloni nëse mjeti nuk mund të detyrohet në TCP. Atëherë përdorni një klient tjetër, ose përdorni qasje të drejtpërdrejtë te dëgjuesi privat.
Hapi 4: provoni cilin pikë fundore arritët në të vërtetë
Pyetni serverin çfarë mendon se është lidhja. Variablat e emrit të hostit, portit dhe socket-it ju tregojnë nëse erdhët përmes TCP dhe cili dëgjues u përgjigj, dhe lista e lidhjeve tregon adresën e burimit që regjistroi serveri. Ai provë është më e dobishme sesa një tjetër ndryshim rrugë.
mysql --protocol=TCP -h 127.0.0.1 -P 13306 -u DB_USER -p -e "SELECT @@hostname, @@port, @@socket"
Regjistroni cilin pikë fundore provuat: një socket Unix lokal, portin tuaj të përcjelljes ose dëgjuesin privat. Këto tre dështime kanë rregullime të ndryshme, dhe ndryshimi i rrugës së VPN ndërsa klienti vazhdon të flasë me localhost-in e gabuar është mund i humbur. Mbani të ndara në shënime edhe vërtetimin SSH dhe vërtetimin e bazës, sepse një dështim në njërën duket si dështim në tjetrën nga një klient desktopi. Pastaj hiqni përcjelljen kur të mbaroni.
Lista mbaron kur mund të përmendni pikën fundore, protokollin e klientit, adresën e burimit që pa serveri dhe lejen që e mundësoi. Katër fakte, dhe problemi i radhës i lidhjes zgjat minuta në vend të një pasdite.