Få MySQL att använda den vidarebefordrade TCP-porten
Undvik att välja en lokal Unix-socket när en MySQL-klient ska ansluta via en SSH TCP-vidarebefordran.
SSH-vidarebefordran lyssnar på den lokala porten 13306, men mysql ansluter fortfarande till den lokala databasen—eller rapporterar att dess lokala socket saknas. På Unix kan en MySQL-klient som ges localhost välja en Unix-socket i stället för TCP. Att ange en port ändrar inte nödvändigtvis detta val.
För en befintlig godkänd TCP-vidarebefordran, gör protokollet explicit:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
Användarnamnet är illustrativt; lösenordsalternativet begär interaktiv inmatning. Kommandot ansluter till den lokala TCP-lyssnaren i stället för en Unix-socket.
Håll de två inloggningarna åtskilda
En fast SSH-rutt kan ha denna form:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
Gatewayens SSH-server når db.internal:3306. MySQL autentiserar sedan databaskontot genom den byteströmmen. En accepterad SSH-nyckel ger inte en databasinloggning, och databasens källrestriktioner ser anslutningen komma från den sidan av rutten.
Detta är en fast TCP-adapter, inte en SOCKS-inställning som mysql använder. Programmet behöver ingen SOCKS-förhandling eftersom vidarebefordrans slutpunkt har ett förutbestämt mål.
Behåll databasens avsedda TLS-identitet och certifikatpolicy där de används. Att ansluta socketen till loopback gör inte ett databascertifikat giltigt för ett annat tjänstenamn. En lyckad lokal TCP-anslutning avgör transportvalet, inte den senare databasautentiseringen eller TLS-kontrollerna.