Laat MySQL de doorgestuurde TCP-poort gebruiken
Vermijd het kiezen van een lokale Unix-socket wanneer een MySQL-client via een SSH TCP-doorsturing moet verbinden.
De SSH-doorsturing luistert op lokale poort 13306, maar mysql maakt nog steeds verbinding met de lokale database—of meldt dat de lokale socket ontbreekt. Op Unix kan een MySQL-client waaraan localhost wordt gegeven een Unix-socket kiezen in plaats van TCP. Een poort opgeven verandert die keuze niet noodzakelijk.
Maak voor een bestaande goedgekeurde TCP-doorsturing het protocol expliciet:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
De gebruikersnaam is illustratief; de wachtwoordoptie vraagt om interactieve invoer. De opdracht maakt verbinding met de lokale TCP-listener in plaats van een Unix-socket.
Houd de twee aanmeldingen gescheiden
Een vaste SSH-route kan deze vorm hebben:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
De SSH-server van de gateway bereikt db.internal:3306. MySQL authenticeert vervolgens het databaseaccount via die bytestroom. Een geaccepteerde SSH-sleutel verleent geen databaselogin, en bronbeperkingen van de database zien de verbinding vanaf die kant van de route binnenkomen.
Dit is een vaste TCP-adapter, geen SOCKS-instelling die mysql gebruikt. De applicatie heeft geen SOCKS-onderhandeling nodig omdat het eindpunt van de doorsturing één vooraf bepaald doel heeft.
Behoud de beoogde TLS-identiteit van de database en het certificaatbeleid waar ze worden gebruikt. De socket met loopback verbinden maakt een databasecertificaat niet geldig voor een andere servicenaam. Een geslaagde lokale TCP-verbinding beslist de transportkeuze, niet de latere databaseauthenticatie of TLS-controles.