Invierta el orden de sus argumentos a socat
y funciona.
socat -v tcp-l:6666,reuseaddr,fork unix:/var/lib/mysql/mysql.sock
Esto instruye a socat
a
- Escuche en el puerto TCP 6666 (con
SO_REUSEADDR
) - Espere para aceptar una conexión
- Cuando se realiza una conexión, bifurcar. En el niño, continúe con los pasos a continuación. En el padre, vaya a 2.
- Abrir una conexión de dominio UNIX a
/var/lib/mysql/mysql.sock
enchufe. - Transferir datos entre los dos puntos finales, luego salir.
Escribiéndolo al revés
socat -v unix:/var/lib/mysql/mysql.sock tcp-l:6666,reuseaddr,fork
no funciona, porque esto instruye a socat
a
- Abrir una conexión de dominio UNIX a
/var/lib/mysql/mysql.sock
enchufe. - Escuche en el puerto TCP 6666 (con
SO_REUSEADDR
) - Espere para aceptar una conexión
- Cuando se realiza una conexión, genera un hijo trabajador para transferir datos entre las dos direcciones.
- El padre continúa aceptando conexiones en la segunda dirección, pero ya no tiene la primera dirección disponible:se le dio al primer hijo. Así que no se puede hacer nada útil a partir de este momento.