Ofis serveridagi ilova localhost orqali MySQLga ulanadi, siz o'sha xost nomini ish stoli klientiga ko'chirasiz va ulanish yo muvaffaqiyatsiz bo'ladi, yo boshqa ma'lumotlar bazasini ochadi. VPN so'zning ma'nosini o'zgartirmadi: localhost hali ham klient ishlayotgan mashinani bildiradi. VPN paketlarni ko'chirdi, interfeyslarni emas. Har qanday marshrutga tegishdan oldin noutbuk qaysi oxirgi nuqtaga yetishi kerakligini hal qiling.

1-qadam: noutbuk qaysi oxirgi nuqtaga yetishi kerakligini hal qiling

Ikkala loyiha ham qonuniy va turli savollarga javob beradi. To'g'ridan-to'g'ri kirish ma'lumotlar bazasi tunnel yetib boradigan maxfiy manzilda tinglashi va noutbuk o'sha manzilga ulanishini bildiradi. Uzatilgan kirish ma'lumotlar bazasi loopbackda qolishi va SSH sessiyasi portni mashinangizga olib borishini bildiradi. Birini ataylab tanlang, chunki ularni aralashtirish noto'g'ri sabab bilan ishlaydigan ulanish hosil qiladi.

To'g'ridan-to'g'ri kirish uchun ma'lumotlar bazasi xostining o'z maxfiy nomi yoki manzilini va uning portini uni boshqaradigan kishidan oling. VPN shlyuzining manzili ma'lumotlar bazasining manzili emas, agar u o'sha mashina bo'lmasa. So'ngra tinglovchi haqiqatan o'sha interfeysga bog'langaniga ishonch hosil qiling, chunki interfeysga marshrut unda tinglovchi yaratmaydi.

2-qadam: portni faqat tinglovchi mahalliy bo'lib qolsa uzating

Agar ma'lumotlar bazasi faqat loopbackda qolishi kerak bo'lsa, uni SSH orqali uzating va mahalliy uchini ham loopbackka bog'lang. Chapdagi bog'lash manzili noutbukingizga tegishli; o'ngdagi maqsad SSH serveri tomonidan talqin qilinadi, OpenSSH ma'lumotnomasi ta'riflaganidek. Bu ikki rolni teskari qo'yish uzatma ishlayotgandek ko'rinib, hech narsaga ulanmasligining odatiy sababidir.

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

Agar SSH ma'lumotlar bazasi xosti o'rniga sakrash xostiga tushsa, o'ngdagi loopback sakrash xostini bildiradi va maqsad o'sha xost yetib boradigan manzilga o'zgartirilishi kerak. ExitOnForwardFailure uzatmani o'rnatishdagi muvaffaqiyatsizlikni ushlaydi, lekin maqsadga keyingi ulanishlar muvaffaqiyatli bo'lishini isbotlamaydi. Xost kalitini tekshirishni yoqilgan holda qoldiring va uzatma portini barcha interfeyslarga bog'lab butun LANingizga taklif qilmang.

Agar ma'lumotlar bazasi faqat loopbackda qolishi kerak bo'lsa va SSHdan foydalana olmasangiz, to'xtang. U holda to'g'ridan-to'g'ri kirish noto'g'ri loyiha, majburlanadigan konfiguratsiya emas.

3-qadam: klientni TCPga majburlang

Unixda localhost berilgan MySQL klienti odatda Unix soketini tanlaydi, shuning uchun faqat portni o'zgartirish uni uzatmangizga aloqasi bo'lmagan soketni qidirib qoldirishi mumkin. Aniq TCP protokoli va loopback manzilidan foydalanib, klientni uzatma portingizga ulanish ochishga majburlang.

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

Qiymatsiz parol opsiyasi sirni buyruq satriga qo'yish o'rniga so'raydi va bu saqlashga arziydigan odat. Boshqa vositalarning ham shu farq uchun o'z kaliti bor, ba'zi drayverlar localhostni ham alohida ko'rib chiqadi. Bayroq o'tgan deb taxmin qilish o'rniga klientingiz nima qilishini tekshiring. Ma'lumotlar bazasi hisobiga ham server ko'radigan manbaga mos ruxsat kerak, va u noutbukingiz emas, uzatma xosti.

Agar vositani TCPga majburlab bo'lmasa, to'xtang. U holda boshqa klientdan yoki maxfiy tinglovchiga to'g'ridan-to'g'ri kirishdan foydalaning.

4-qadam: haqiqatan qaysi oxirgi nuqtaga yetganingizni isbotlang

Serverdan ulanishni nima deb hisoblashini so'rang. Xost nomi, port va soket o'zgaruvchilari TCP orqali kelganingizni va qaysi tinglovchi javob berganini aytadi, ulanishlar ro'yxati esa server qayd etgan manba manzilini ko'rsatadi. Bu dalil yana bir marshrut o'zgarishidan foydaliroq.

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

Qaysi oxirgi nuqtani sinab ko'rganingizni yozib qo'ying: mahalliy Unix soketi, uzatma portingiz yoki maxfiy tinglovchi. Bu uch muvaffaqiyatsizlikning tuzatishlari har xil, va klient hali noto'g'ri localhost bilan gaplashayotganda VPN marshrutini o'zgartirish behuda mehnat. Eslatmalarda SSH autentifikatsiyasi va ma'lumotlar bazasi autentifikatsiyasini ham alohida saqlang, chunki ish stoli klientidan biridagi muvaffaqiyatsizlik ikkinchisidagi muvaffaqiyatsizlik kabi ko'rinadi. So'ngra ish tugagach uzatmani olib tashlang.

Ro'yxat oxirgi nuqtani, klient protokolini, server ko'rgan manba manzilini va bunga ruxsat bergan ruxsatni ayta olganingizda tugaydi. To'rt fakt, va keyingi ulanish muammosi tushdan keyin emas, bir necha daqiqa oladi.

O'xshash maqolalar