Få MySQL til at bruge den videresendte TCP-port
Undgå at vælge en lokal Unix-socket, når en MySQL-klient skal forbinde via en SSH TCP-videresendelse.
SSH-videresendelsen lytter på lokal port 13306, men mysql forbinder stadig til den lokale database—eller rapporterer, at dens lokale socket mangler. På Unix kan en MySQL-klient, der får localhost, vælge en Unix-socket i stedet for TCP. At angive en port ændrer ikke nødvendigvis dette valg.
For en eksisterende godkendt TCP-videresendelse, gør protokollen eksplicit:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
Brugernavnet er illustrativt; adgangskodeindstillingen anmoder om interaktiv indtastning. Kommandoen forbinder til den lokale TCP-lytter i stedet for en Unix-socket.
Hold de to logins adskilt
En fast SSH-rute kan have denne form:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
Gatewayens SSH-server når db.internal:3306. MySQL godkender derefter databasekontoen gennem den bytestrøm. En accepteret SSH-nøgle giver ikke et databaselogin, og databasens kilderestriktioner ser forbindelsen ankomme fra den side af ruten.
Dette er en fast TCP-adapter, ikke en SOCKS-indstilling, som mysql forbruger. Applikationen har ikke brug for SOCKS-forhandling, fordi videresendelsens endepunkt har ét foruddefineret mål.
Behold den tilsigtede TLS-identitet for databasen og certifikatpolitikken, hvor de bruges. At forbinde socketen til loopback gør ikke et databasecertifikat gyldigt for et andet servicenavn. En vellykket lokal TCP-forbindelse afgør transportvalget, ikke den senere databasegodkendelse eller TLS-kontroller.