Mae'r ap ar weinydd y swyddfa yn cysylltu â MySQL yn localhost, rydych yn copïo'r enw gwesteiwr hwnnw i gleient pen-desg, ac mae'r cysylltiad naill ai'n methu neu'n agor cronfa ddata wahanol. Ni newidiodd y VPN ystyr y gair: mae localhost yn dal i olygu'r peiriant sy'n rhedeg y cleient. Symudodd y VPN becynnau, nid rhyngwynebau. Penderfynwch pa ben i'r gliniadur gyrraedd cyn i chi gyffwrdd â llwybr.

Cam 1: penderfynwch pa ben i'r gliniadur gyrraedd

Mae'r ddau gynllun yn ddilys ac yn ateb cwestiynau gwahanol. Mae mynediad uniongyrchol yn golygu bod y gronfa ddata'n gwrando ar gyfeiriad preifat y gall y twnnel ei gyrraedd, ac mae'r gliniadur yn cysylltu â'r cyfeiriad hwnnw. Mae mynediad a anfonir ymlaen yn golygu bod y gronfa ddata'n aros ar loopback ac mae sesiwn SSH yn cario'r porth i'ch peiriant. Dewiswch un yn fwriadol, oherwydd mae cymysgu'r ddau yn cynhyrchu cysylltiad sy'n gweithio am y rheswm anghywir.

Ar gyfer mynediad uniongyrchol, cewch enw neu gyfeiriad preifat gwesteiwr y gronfa ddata a'i borth gan bwy bynnag sy'n ei redeg. Nid cyfeiriad y gronfa ddata yw cyfeiriad porth y VPN oni bai mai'r un peiriant yw hi. Yna cadarnhewch fod y gwrandäwr wedi'i rwymo i'r rhyngwyneb hwnnw mewn gwirionedd, oherwydd nid yw llwybr i ryngwyneb yn creu gwrandäwr arno.

Cam 2: anfonwch y porth ymlaen dim ond os yw'r gwrandäwr yn aros yn lleol

Os dylai'r gronfa ddata aros ar loopback yn unig, anfonwch hi ymlaen dros SSH a rhwymwch y pen lleol i loopback hefyd. Mae'r cyfeiriad rhwymo ar y chwith yn perthyn i'ch gliniadur; dehonglir y targed ar y dde o ochr y gweinydd SSH, fel y mae cyfeirlyfr OpenSSH yn ei ddisgrifio. Gwyrdroi'r ddau rôl hynny yw'r rheswm arferol pam mae porth yn ymddangos fel petai'n gweithio ond yn cysylltu â dim.

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

Os yw SSH yn glanio ar westai naid yn hytrach na gwestai'r gronfa ddata, mae'r loopback ar y dde yn cyfeirio at y gwestai naid, a rhaid newid y targed i gyfeiriad y gall y gwestai hwnnw ei gyrraedd. Mae ExitOnForwardFailure yn dal methiant i sefydlu'r porth, ond nid yw'n profi bod cysylltiadau diweddarach â'r targed yn llwyddo. Cadwch wirio allwedd y gwestai ymlaen, a pheidiwch â chynnig y porth anfon i'ch LAN gyfan drwy ei rwymo i bob rhyngwyneb.

Stopiwch os oes rhaid i'r gronfa ddata aros ar loopback yn unig ac na allwch ddefnyddio SSH. Yna mynediad uniongyrchol yw'r cynllun anghywir, nid cyfluniad i'w orfodi.

Cam 3: gorfodwch y cleient i TCP

Ar Unix, mae cleient MySQL y rhoddir localhost iddo yn dewis soced Unix yn ddiofyn, felly gall newid y porth yn unig ei adael yn chwilio am soced nad oes ganddo ddim i'w wneud â'ch porth anfon. Defnyddiwch y protocol TCP penodol a'r cyfeiriad loopback i wneud i'r cleient agor cysylltiad â'ch porth anfon.

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

Mae'r opsiwn cyfrinair heb werth yn gofyn yn lle rhoi'r gyfrinach ar y llinell orchymyn, a dyna'r arfer sy'n werth ei gadw. Mae gan offerynnau eraill eu switsh eu hunain ar gyfer yr un gwahaniaeth, ac mae rhai gyrwyr yn trin localhost yn arbennig hefyd. Gwiriwch beth mae eich cleient yn ei wneud yn lle tybio bod y faner wedi trosglwyddo. Mae angen caniatâd ar gyfrif y gronfa ddata hefyd sy'n cyfateb i'r ffynhonnell y mae'r gweinydd yn ei gweld, sef gwestai'r porth anfon yn hytrach na'ch gliniadur.

Stopiwch os na ellir gorfodi'r offeryn i TCP. Yna defnyddiwch gleient arall, neu defnyddiwch fynediad uniongyrchol i'r gwrandäwr preifat.

Cam 4: profwch pa ben y daethoch iddo mewn gwirionedd

Gofynnwch i'r gweinydd beth y mae'n ei feddwl yw'r cysylltiad. Mae'r newidynnau enw gwestai, porth a soced yn dweud wrthych a ddaethoch dros TCP a pha wrandäwr a atebodd, ac mae'r rhestr gysylltiadau'n dangos y cyfeiriad ffynhonnell a gofnododd y gweinydd. Mae'r dystiolaeth honno'n fwy defnyddiol na newid llwybr arall.

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

Cofnodwch pa ben y gwnaethoch gynnig: soced Unix lleol, eich porth anfon neu'r gwrandäwr preifat. Mae gan y tri methiant hynny atgyweiriadau gwahanol, ac mae newid llwybr y VPN tra bo'r cleient yn dal i siarad â'r localhost anghywir yn ymdrech ofer. Cadwch ddilysiad SSH a dilysiad y gronfa ddata ar wahân yn y nodiadau hefyd, oherwydd mae methiant yn y naill yn edrych fel methiant yn y llall o gleient pen-desg. Yna tynnwch y porth pan fyddwch wedi gorffen.

Mae'r rhestr wirio'n dod i ben pan allwch enwi'r pen, protocol y cleient, y cyfeiriad ffynhonnell a welodd y gweinydd a'r caniatâd a'i galluogodd. Pedwar ffaith, ac mae'r broblem gysylltiad nesaf yn cymryd munudau yn lle prynhawn.

Erthyglau cysylltiedig