Haz que MySQL use el puerto TCP reenviado
Evita elegir un socket Unix local cuando un cliente MySQL debe conectarse mediante un reenvío SSH TCP.
El reenvío SSH escucha en el puerto local 13306, pero mysql sigue conectándose a la base de datos local—o informa de que falta su socket local. En Unix, un cliente MySQL al que se le da localhost puede elegir un socket Unix en lugar de TCP. Proporcionar un puerto no cambia necesariamente esa elección.
Para un reenvío TCP aprobado ya existente, haz explícito el protocolo:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
El nombre de usuario es ilustrativo; la opción de contraseña solicita una entrada interactiva. El comando se conecta al escucha TCP local en lugar de a un socket Unix.
Mantén separados los dos inicios de sesión
Una ruta SSH fija puede tener esta forma:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
El servidor SSH de la puerta de enlace llega a db.internal:3306. Después MySQL autentica la cuenta de la base de datos a través de ese flujo de bytes. Una clave SSH aceptada no concede un inicio de sesión en la base de datos, y las restricciones de origen de la base de datos ven la conexión llegando desde ese lado de la ruta.
Esto es un adaptador TCP fijo, no un ajuste SOCKS consumido por mysql. La aplicación no necesita negociación SOCKS porque el punto final del reenvío tiene un objetivo predefinido.
Conserva la identidad TLS prevista de la base de datos y la política de certificados donde se utilicen. Conectar el socket a loopback no hace que un certificado de base de datos sea válido para un nombre de servicio distinto. Una conexión TCP local correcta resuelve la elección de transporte, no la autenticación posterior de la base de datos ni las comprobaciones TLS.