Få MySQL til å bruke den videresendte TCP-porten
Unngå å velge en lokal Unix-socket når en MySQL-klient skal koble til via en SSH TCP-videresending.
SSH-videresendingen lytter på lokal port 13306, men mysql kobler fortsatt til den lokale databasen—eller rapporterer at den lokale socketen mangler. På Unix kan en MySQL-klient som gis localhost velge en Unix-socket i stedet for TCP. Å oppgi en port endrer ikke nødvendigvis dette valget.
For en eksisterende godkjent TCP-videresending, gjør protokollen eksplisitt:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
Brukernavnet er illustrativt; passordvalget ber om interaktiv inntasting. Kommandoen kobler til den lokale TCP-lytteren i stedet for en Unix-socket.
Hold de to innloggingene atskilt
En fast SSH-rute kan ha denne formen:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
SSH-serveren på gatewayen når db.internal:3306. MySQL autentiserer deretter databasekontoen gjennom den bytestrømmen. En akseptert SSH-nøkkel gir ikke innlogging i databasen, og databasens kildebegrensninger ser tilkoblingen komme fra den siden av ruten.
Dette er en fast TCP-adapter, ikke en SOCKS-innstilling som mysql bruker. Applikasjonen trenger ingen SOCKS-forhandling fordi videresendingens endepunkt har ett forhåndsdefinert mål.
Behold den tiltenkte TLS-identiteten til databasen og sertifikatpolicyen der de brukes. Å koble socketen til loopback gjør ikke et databasesertifikat gyldig for et annet tjenestenavn. En vellykket lokal TCP-tilkobling avgjør transportvalget, ikke den senere databaseautentiseringen eller TLS-kontrollene.