MySQL localhost VPN-i kaudu: see tähendab ikka kohalikku protsessi
Andmebaas, mida rakendus nimetab localhostiks, asub serveris, mitte sinu sülearvutis. Kasuta privaatset kuulajat või SSH-edastust ja sunni klient seejärel TCP-le.
Kontoriserveri rakendus ühendub MySQL-iga aadressil localhost, kopeerid selle hostinime töölauakliendile ja ühendus kas ebaõnnestub või avab teise andmebaasi. VPN ei muutnud sõna tähendust: localhost viitab endiselt masinale, kus klient töötab. VPN liigutas pakette, mitte liideseid. Otsusta, millisele otspunktile sülearvuti peaks jõudma, enne kui marsruuti puudutad.
Samm 1: otsusta, millisele otspunktile sülearvuti peaks jõudma
Mõlemad lahendused on legitiimsed ja vastavad eri küsimustele. Otsejuurdepääs tähendab, et andmebaas kuulab privaatsel aadressil, kuhu tunnel jõuab, ja sülearvuti ühendub selle aadressiga. Edastatud juurdepääs tähendab, et andmebaas jääb loopbackile ja SSH-sessioon kannab pordi sinu masinasse. Vali üks teadlikult, sest nende segamine annab ühenduse, mis töötab vale põhjuse tõttu.
Otsejuurdepääsu jaoks hangi andmebaasi hosti enda privaatne nimi või aadress ja selle port sellelt, kes seda haldab. VPN-lüüsi aadress ei ole andmebaasi aadress, kui see pole sama masin. Seejärel kinnita, et kuulaja on tõesti selle liidesega seotud, sest marsruut liidesele ei loo sellele kuulajat.
Samm 2: edasta port ainult siis, kui kuulaja jääb kohalikuks
Kui andmebaas peab jääma ainult loopbackile, edasta see SSH kaudu ja seo ka kohalik ots loopbackiga. Vasakpoolne sidumisaadress kuulub sinu sülearvutile; parempoolset sihtmärki tõlgendatakse SSH-serveri poolelt, nagu kirjeldab OpenSSH viide. Nende kahe rolli vahetamine on tavaline põhjus, miks edastus näib töötavat, aga ei ühendu millegagi.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:13306:127.0.0.1:3306 [email protected]
ss -ltn 'sport = :13306'
Kui SSH maandub hüppehostile, mitte andmebaasi hostile, viitab parempoolne loopback hüppehostile ja sihtmärk tuleb muuta aadressiks, kuhu see host jõuab. ExitOnForwardFailure püüab edastuse loomise ebaõnnestumise, kuid ei tõesta, et hilisemad ühendused sihtmärgini õnnestuvad. Hoia hostivõtme kontroll sisse lülitatud ja ära paku edastusporti kogu oma LAN-ile, sidudes selle kõigi liidestega.
Peatu, kui andmebaas peab jääma ainult loopbackile ja SSH-d kasutada ei saa. Siis on otsejuurdepääs vale lahendus, mitte konfiguratsioon, mida peale suruda.
Samm 3: sunni klient TCP-le
Unixis valib MySQLi klient, kellele antakse localhost, vaikimisi Unixi sokli, nii et ainult pordi muutmine võib jätta ta otsima soklit, millel pole sinu edastusega midagi pistmist. Kasuta selgesõnalist TCP-protokolli ja loopbacki aadressi, et klient avaks ühenduse sinu edastusporti.
mysql --protocol=TCP --host=127.0.0.1 --port=13306 --user=DB_USER --password
Paroolivalik ilma väärtuseta küsib, selle asemel et saladust käsureale panna, ja see on harjumus, mida tasub hoida. Teistel tööriistadel on sama eristuse jaoks oma lüliti ja mõned draiverid kohtlevad localhosti samuti eriliselt. Kontrolli, mida sinu klient teeb, selle asemel et eeldada, et lipp kandus üle. Andmebaasi kontol on vaja ka õigust, mis vastab allikale, mida server näeb, ja see on edastushost, mitte sinu sülearvuti.
Peatu, kui tööriista ei saa TCP-le sundida. Siis kasuta teist klienti või otsejuurdepääsu privaatsele kuulajale.
Samm 4: tõesta, millisele otspunktile sa tegelikult jõudsid
Küsi serverilt, milleks see ühendust peab. Hostinime, pordi ja sokli muutujad ütlevad, kas jõudsid kohale TCP kaudu ja milline kuulaja vastas, ning ühenduste loend näitab allikaaadressi, mille server salvestas. See tõend on kasulikum kui veel üks marsruudimuudatus.
mysql --protocol=TCP -h 127.0.0.1 -P 13306 -u DB_USER -p -e "SELECT @@hostname, @@port, @@socket"
Pane kirja, millist otspunkti proovisid: kohalik Unixi sokkel, sinu edastusport või privaatne kuulaja. Neil kolmel ebaõnnestumisel on erinevad parandused ja VPN-i marsruudi muutmine, kui klient räägib veel vale localhostiga, on raisatud vaev. Hoia märkmetes ka SSH-autentimine ja andmebaasi autentimine lahus, sest ühe ebaõnnestumine näeb töölauakliendist välja nagu teise ebaõnnestumine. Seejärel eemalda edastus, kui oled lõpetanud.
Kontrollnimekiri lõpeb, kui suudad nimetada otspunkti, kliendi protokolli, allikaaadressi, mida server nägi, ja õigust, mis selle lubas. Neli fakti ja järgmine ühendusprobleem võtab minuteid, mitte pärastlõunat.