Inverta a ordem de seus argumentos para
socat
, e funciona. socat -v tcp-l:6666,reuseaddr,fork unix:/var/lib/mysql/mysql.sock
Isso instrui
socat
para - Ouvir na porta TCP 6666 (com
SO_REUSEADDR
) - Aguarde para aceitar uma conexão
- Quando uma conexão é feita, bifurca. Na criança, continue as etapas abaixo. No pai, vá para 2.
- Abra uma conexão de domínio UNIX para
/var/lib/mysql/mysql.sock
soquete. - Transfira dados entre os dois endpoints e saia.
Escrevendo ao contrário
socat -v unix:/var/lib/mysql/mysql.sock tcp-l:6666,reuseaddr,fork
não funciona, porque isso instrui
socat
para - Abra uma conexão de domínio UNIX para
/var/lib/mysql/mysql.sock
soquete. - Ouvir na porta TCP 6666 (com
SO_REUSEADDR
) - Aguarde para aceitar uma conexão
- Quando uma conexão é feita, gere um filho trabalhador para transferir dados entre os dois endereços.
- O pai continua a aceitar conexões no segundo endereço, mas não tem mais o primeiro endereço disponível:foi dado ao primeiro filho. Portanto, nada de útil pode ser feito a partir deste ponto.