Апликација на канцеларијском серверу повезује се са 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-у MySQL клијент коме се зада localhost према задатом бира 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 сокет, свој порт прослеђивања или приватни слушалац. Та три неуспеха имају различите поправке, а мењање VPN руте док клијент још разговара са погрешним localhost-ом је узалудан труд. Држите SSH аутентификацију и аутентификацију базе одвојено у белешкама, јер неуспех у једној изгледа као неуспех у другој из десктоп клијента. Затим уклоните прослеђивање кад завршите.

Списак се завршава кад можете да наведете крајњу тачку, протокол клијента, изворну адресу коју је сервер видео и дозволу која ју је омогућила. Четири чињенице, и следећи проблем са везом траје минуте уместо поподнева.

Повезани чланци