Inversez l'ordre de vos arguments en socat
, et ça marche.
socat -v tcp-l:6666,reuseaddr,fork unix:/var/lib/mysql/mysql.sock
Ceci indique socat
à
- Écouter sur le port TCP 6666 (avec
SO_REUSEADDR
) - Attendre pour accepter une connexion
- Lorsqu'une connexion est établie, bifurquez. Chez l'enfant, continuez les étapes ci-dessous. Dans le parent, allez à 2.
- Ouvrir une connexion de domaine UNIX vers
/var/lib/mysql/mysql.sock
prise. - Transférez les données entre les deux points de terminaison, puis quittez.
Écrire dans l'autre sens
socat -v unix:/var/lib/mysql/mysql.sock tcp-l:6666,reuseaddr,fork
ne fonctionne pas, car cela indique socat
à
- Ouvrir une connexion de domaine UNIX vers
/var/lib/mysql/mysql.sock
prise. - Écouter sur le port TCP 6666 (avec
SO_REUSEADDR
) - Attendre pour accepter une connexion
- Lorsqu'une connexion est établie, générez un enfant de travail pour transférer les données entre les deux adresses.
- Le parent continue d'accepter les connexions sur la deuxième adresse, mais n'a plus la première adresse disponible :elle a été donnée au premier enfant. Donc, rien d'utile ne peut être fait à partir de ce moment.