MySQL localhost kupitia VPN: bado inamaanisha mchakato wa ndani
Hifadhidata ambayo programu inaiita localhost iko kwenye seva, si kwenye kompyuta yako ya mkononi. Tumia msikilizaji wa faragha au uhamishaji wa SSH, kisha mlazimishe mteja kutumia TCP.
Programu iliyo kwenye seva ya ofisi inaunganisha na MySQL kwenye localhost, unakili jina hilo la mwenyeji kwenye mteja wa kompyuta ya mezani, na muunganisho ama unashindikana au unafungua hifadhidata nyingine. VPN haikubadilisha maana ya neno: localhost bado inarejelea mashine inayoendesha mteja. VPN ilihamisha pakiti, si violesura. Amua ni kituo gani cha mwisho kompyuta ya mkononi inapaswa kufikia kabla ya kugusa njia yoyote.
Hatua 1: amua ni kituo gani cha mwisho kompyuta ya mkononi inapaswa kufikia
Miundo yote miwili ni halali na inajibu maswali tofauti. Ufikiaji wa moja kwa moja unamaanisha hifadhidata inasikiliza kwenye anwani ya faragha ambayo handaki inaifikia, na kompyuta ya mkononi inaunganisha na anwani hiyo. Ufikiaji uliohamishwa unamaanisha hifadhidata inabaki kwenye loopback na kikao cha SSH kinabeba bandari hadi kwenye mashine yako. Chagua kimoja kwa makusudi, kwa sababu kuzichanganya kunazalisha muunganisho unaofanya kazi kwa sababu isiyo sahihi.
Kwa ufikiaji wa moja kwa moja, pata jina au anwani ya faragha ya mwenyeji wa hifadhidata yenyewe na bandari yake kutoka kwa anayeisimamia. Anwani ya lango la VPN si anwani ya hifadhidata isipokuwa ni mashine hiyo hiyo. Kisha thibitisha kuwa msikilizaji amefungwa kweli kwenye violesura hivyo, kwa sababu njia kuelekea violesura haiundi msikilizaji juu yake.
Hatua 2: hamisha bandari tu ikiwa msikilizaji unabaki ndani
Ikiwa hifadhidata inapaswa kubaki kwenye loopback pekee, ihamishe kwa SSH na funga mwisho wa ndani kwenye loopback pia. Anwani ya kufunga ya kushoto ni ya kompyuta yako ya mkononi; lengo la kulia linafasiriwa kutoka upande wa seva ya SSH, kama marejeleo ya OpenSSH inavyoeleza. Kubadilisha majukumu hayo mawili ndiyo sababu ya kawaida uhamishaji kuonekana unafanya kazi lakini haunganishi na kitu chochote.
ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:13306:127.0.0.1:3306 [email protected]
ss -ltn 'sport = :13306'
Ikiwa SSH inatua kwenye mwenyeji wa kuruka badala ya mwenyeji wa hifadhidata, loopback ya kulia inarejelea mwenyeji wa kuruka, na lengo linapaswa kubadilishwa kuwa anwani ambayo mwenyeji huyo anaifikia. ExitOnForwardFailure inakamata kushindikana kuweka uhamishaji, lakini haithibitishi kuwa miunganisho ya baadaye kwa lengo itafanikiwa. Weka ukaguzi wa ufunguo wa mwenyeji ukiwa umewashwa, na usitoe bandari ya uhamishaji kwa LAN yako yote kwa kuifunga kwenye violesura vyote.
Simama ikiwa hifadhidata inapaswa kubaki kwenye loopback pekee na hauwezi kutumia SSH. Wakati huo ufikiaji wa moja kwa moja ni muundo mbaya, si usanidi wa kulazimishwa.
Hatua 3: mlazimishe mteja kutumia TCP
Kwenye Unix, mteja wa MySQL anayepewa localhost huchagua soketi ya Unix kwa chaguo-msingi, kwa hivyo kubadilisha bandari pekee kunaweza kumwacha akitafuta soketi ambayo haina uhusiano wowote na uhamishaji wako. Tumia itifaki dhahiri ya TCP na anwani ya loopback ili mteja afungue muunganisho kwenye bandari yako ya uhamishaji.
mysql --protocol=TCP --host=127.0.0.1 --port=13306 --user=DB_USER --password
Chaguo la nenosiri lisilo na thamani huliza badala ya kuweka siri kwenye mstari wa amri, na hii ndiyo tabia inayofaa kuendelezwa. Zana nyingine zina swichi yao kwa tofauti hiyo hiyo, na baadhi ya viendeshi hushughulikia localhost kwa namna maalum pia. Angalia mteja wako anafanya nini badala ya kudhani kwamba bendera ilipitishwa. Akaunti ya hifadhidata pia inahitaji ruhusa inayolingana na chanzo ambacho seva inaona, na hicho ni mwenyeji wa uhamishaji, si kompyuta yako ya mkononi.
Simama ikiwa zana haiwezi kulazimishwa kutumia TCP. Wakati huo tumia mteja mwingine, au tumia ufikiaji wa moja kwa moja kwa msikilizaji wa faragha.
Hatua 4: thibitisha ni kituo gani cha mwisho ulichofikia kwa kweli
Muulize seva inadhani muunganisho ni nini. Vigeu vya jina la mwenyeji, bandari na soketi vinakuambia kama ulikuja kwa TCP na ni msikilizaji gani ulijibu, na orodha ya miunganisho inaonyesha anwani ya chanzo ambayo seva ilirekodi. Ushahidi huo ni muhimu zaidi kuliko mabadiliko mengine ya njia.
mysql --protocol=TCP -h 127.0.0.1 -P 13306 -u DB_USER -p -e "SELECT @@hostname, @@port, @@socket"
Rekodi ni kituo gani cha mwisho ulijaribu: soketi ya Unix ya ndani, bandari yako ya uhamishaji au msikilizaji wa faragha. Kushindikana huku kutatu kuna marekebisho tofauti, na kubadilisha njia ya VPN wakati mteja bado anazungumza na localhost isiyo sahihi ni jitihada bure. Weka pia uthibitishaji wa SSH na uthibitishaji wa hifadhidata tofauti kwenye maelezo, kwa sababu kushindikana kwa kimoja kunaonekana kama kushindikana kwa kingine kutoka kwa mteja wa kompyuta ya mezani. Kisha ondoa uhamishaji ukiwa umemaliza.
Orodha inaisha unapoweza kutaja kituo cha mwisho, itifaki ya mteja, anwani ya chanzo ambayo seva iliona na ruhusa iliyoiruhusu. Mambo manne, na tatizo lijalo la muunganisho huchukua dakika badala ya mchana mzima.