sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo mapear un socket unix local a un socket inet?

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

  1. Escuche en el puerto TCP 6666 (con SO_REUSEADDR )
  2. Espere para aceptar una conexión
  3. 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.
  4. Abrir una conexión de dominio UNIX a /var/lib/mysql/mysql.sock enchufe.
  5. 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

  1. Abrir una conexión de dominio UNIX a /var/lib/mysql/mysql.sock enchufe.
  2. Escuche en el puerto TCP 6666 (con SO_REUSEADDR )
  3. Espere para aceptar una conexión
  4. Cuando se realiza una conexión, genera un hijo trabajador para transferir datos entre las dos direcciones.
  5. 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.