Кеңсе сервериндеги колдонмо MySQLге localhost аркылуу туташат, сиз ошол хост атын иш такта кардарына көчүрөсүз, ал эми туташуу же ийгиликсиз болот, же башка маалымат базасын ачат. VPN сөздүн маанисин өзгөрткөн жок: localhost дагы эле кардарды иштеткен машинаны билдирет. VPN пакеттерди жылдырды, интерфейстерди эмес. Маршрутка тийүүдөн мурун ноутбук кайсы акыркы чекитке жетиши керектигин чечиңиз.

1-кадам: ноутбук кайсы акыркы чекитке жетиши керектигин чечиңиз

Эки долбоор тең мыйзамдуу жана ар башка суроолорго жооп берет. Түз жетүү маалымат базасынын туннель жете турган жеке дарегинде угуп жатканын, ал эми ноутбуктун ошол дарекке туташканын билдирет. Өткөрүлгөн жетүү маалымат базасынын loopbackте калаарын жана SSH сессиясы портту сиздин машинаңызга алып бараарын билдирет. Бирөөнү атайын тандаңыз, анткени аларды аралаштыруу туура эмес себептен иштеген туташууну берет.

Түз жетүү үчүн маалымат базасынын хостүнүн өзүнүн жеке атын же дарегин жана анын портун аны башкарган адамдан алыңыз. VPN дарбазасынын дареги маалымат базасынын дареги эмес, эгер ал ошол эле машина болбосо. Анан угуучу чындыгында ошол интерфейске байланганын тастыктаңыз, анткени интерфейске барган маршрут анын үстүндө угуучу жаратпайт.

2-кадам: портту угуучу жергиликтүү бойдон калса гана өткөрүңүз

Маалымат базасы loopbackте гана калышы керек болсо, аны SSH аркылуу өткөрүңүз жана жергиликтүү учун да loopbackке байлаңыз. Сол жактагы байлоо дареги сиздин ноутбукуңузга таандык; оң жактагы максат SSH серверинин жагынан чечмеленет, OpenSSH маалымдамасы сүрөттөгөндөй. Ушул эки ролду тескери которуу — өткөрүү иштеп жаткандай көрүнүп, бирок эч нерсеге туташпастыгынын кадимки себеби.

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:13306:127.0.0.1:3306 [email protected]
ss -ltn 'sport = :13306'

Эгер SSH маалымат базасынын хостүнүн ордуна секирүү хостүнө консо, оң жактагы loopback секирүү хостүн билдирет жана максатты ошол хост жете алган дарекке өзгөртүү керек. ExitOnForwardFailure өткөрүүнү орнотуудагы ийгиликсиздикти кармайт, бирок максатка кийинки туташуулардын ийгиликтүү болорун далилдебейт. Хост ачкычын текшерүүнү күйгүзүп кармаңыз жана өткөрүү портун бардык интерфейстерге байлап, бүт LANыңызга сунуштабаңыз.

Маалымат базасы loopbackте гана калышы керек болсо жана SSH колдоно албасаңыз, токтоңуз. Анда түз жетүү туура эмес долбоор, мажбурлануучу конфигурация эмес.

3-кадам: кардарды TCPге мажбурлаңыз

Unixте localhost берилген MySQL кардары демейде Unix сокетин тандайт, ошондуктан портту гана өзгөртүү аны сиздин өткөрүүңүзгө эч катышы жок сокетти издеп калтырышы мүмкүн. Ачык TCP протоколун жана loopback дарегин колдонуп, кардарды өткөрүү портуңузга туташуу ачууга мажбурлаңыз.

mysql --protocol=TCP --host=127.0.0.1 --port=13306 --user=DB_USER --password

Маанисиз сырсөз опциясы сырды буйрук сабына коюунун ордуна сурайт, жана бул сакталууга татыктуу адат. Башка куралдардын ошол эле айырма үчүн өзүнүн которгучу бар, ал эми айрым драйверлер localhostту өзгөчө карашат. Желек өттү деп божомолдоонун ордуна кардарыңыз эмне кылаарын текшериңиз. Маалымат базасынын эсебине сервер көргөн булакка туура келген укук керек, ал сиздин ноутбукуңуз эмес, өткөрүү хостү.

Куралды TCPге мажбурлоо мүмкүн болбосо, токтоңуз. Анда башка кардарды же жеке угуучуга түз жетүүнү колдонуңуз.

4-кадам: чындыгында кайсы акыркы чекитке жеткениңизди далилдеңиз

Серверден туташууну эмне деп эсептеэрин сураңыз. Хост аты, порт жана сокет өзгөрмөлөрү TCP аркылуу келгениңизди жана кайсы угуучу жооп бергенин айтат, ал эми туташуулардын тизмеси сервер жазган булак дарегин көрсөтөт. Бул далил дагы бир маршрут өзгөртүүдөн пайдалуураак.

mysql --protocol=TCP -h 127.0.0.1 -P 13306 -u DB_USER -p -e "SELECT @@hostname, @@port, @@socket"

Кайсы акыркы чекитти сынап көргөнүңүздү жазыңыз: жергиликтүү Unix сокети, өткөрүү портуңуз же жеке угуучу. Бул үч ийгиликсиздиктин оңдоосу ар башка, ал эми кардар дагы эле туура эмес localhost менен сүйлөшүп жатканда VPN маршрутун өзгөртүү — бекер эмгек. Жазууларда SSH аутентификациясын жана маалымат базасынын аутентификациясын өзүнчө кармаңыз, анткени иш такта кардарынан бириндеги ийгиликсиздик экинчисиндеги ийгиликсиздикке окшош. Анан ишти бүткөндө өткөрүүнү алып салыңыз.

Тизме акыркы чекитти, кардар протоколун, сервер көргөн булак дарегин жана ага уруксат берген укукту атай алганыңызда бүтөт. Төрт факт, ал эми кийинки туташуу маселеси түштөн кийин эмес, бир нече мүнөт алат.

Тектеш макалалар