Peleando con una conexión a MySQL vía un tunel de SSH descubrimos que localhost, aunque resuelva correctamente en el destino a 127.0.0.1 no “es lo mismo” que usar la numeración como dato de conexión.

En clientes que soportan tuneles SSH se establece una conexión via SSH y sobre ella se conecta al servidor MySQL. Eso supone que la conexión a servidor MySQL se hace “desde” el servidor SSH por lo que los datos de conexión no serán servidor.destino.com sino los que usarias localmente desde el propio servidor. Eso afecta también a los permisos del usuario con se conecta entre otros (localhost en lugar de IP remota) y nos permite conectar de manera segura desde distintos orígenes sin tener que crear usuarios adicionales en el servidor de datos.

Pues bien, no está directamente relacionada con  esta entrada en stackoverflow pero leyéndola descubrimos que MySQL establece las conexiones a localhost en este contexto desde el socket (algo así como el archivo de ejecución directo) en lugar del a través del puerto solicitado. Es decir, en este contexto hay que usar 127.0.0.1 como conexión y no localhost en los datos del server MySQL para que funcione