Få MySQL til å bruke den vidaresende TCP-porten
Unngå å velje ein lokal Unix-socket når ein MySQL-klient skal kople til via ei SSH TCP-vidaresending.
SSH-vidaresendinga lyttar på lokal port 13306, men mysql koplar framleis til den lokale databasen—eller rapporterer at den lokale socketen manglar. På Unix kan ein MySQL-klient som får localhost velje ein Unix-socket i staden for TCP. Å oppgje ein port endrar ikkje nødvendigvis dette valet.
For ei eksisterande godkjend TCP-vidaresending, gjer protokollen eksplisitt:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
Brukarnamnet er illustrativt; passordvalet ber om interaktiv inntasting. Kommandoen koplar til den lokale TCP-lyttaren i staden for ein Unix-socket.
Hald dei to innloggingane åtskilde
Ei fast SSH-rute kan ha denne forma:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
SSH-tenaren på gatewayen når db.internal:3306. MySQL autentiserer deretter databasekontoen gjennom den bytestraumen. Ein godteken SSH-nøkkel gir ikkje innlogging i databasen, og kjeldegrenser i databasen ser tilkoplinga kome frå den sida av ruta.
Dette er ein fast TCP-adapter, ikkje ei SOCKS-innstilling som mysql brukar. Applikasjonen treng ingen SOCKS-forhandling fordi endepunktet til vidaresendinga har eitt førehandsoppgjeve mål.
Hald på den tiltenkte TLS-identiteten til databasen og sertifikatpolicyen der dei vert brukte. Å kople socketen til loopback gjer ikkje eit databasesertifikat gyldig for eit anna tenestenamn. Ei vellukka lokal TCP-tilkopling avgjer transportvalet, ikkje den seinare databaseautentiseringa eller TLS-kontrollane.