Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich einen lokalen Unix-Socket einem Inet-Socket zuordnen?

Kehren Sie die Reihenfolge Ihrer Argumente zu socat um , und es funktioniert.

socat -v tcp-l:6666,reuseaddr,fork unix:/var/lib/mysql/mysql.sock

Dies weist socat an zu

  1. Auf TCP-Port 6666 lauschen (mit SO_REUSEADDR )
  2. Warten Sie, bis eine Verbindung akzeptiert wird
  3. Wenn eine Verbindung hergestellt wird, verzweige. Fahren Sie beim Kind mit den folgenden Schritten fort. Gehen Sie im übergeordneten Element zu 2.
  4. Öffnen Sie eine UNIX-Domänenverbindung zu /var/lib/mysql/mysql.sock Steckdose.
  5. Daten zwischen den beiden Endpunkten übertragen und dann beenden.

Umgekehrt geschrieben

socat -v unix:/var/lib/mysql/mysql.sock tcp-l:6666,reuseaddr,fork

funktioniert nicht, weil dies socat anweist zu

  1. Öffnen Sie eine UNIX-Domänenverbindung zu /var/lib/mysql/mysql.sock Steckdose.
  2. Auf TCP-Port 6666 lauschen (mit SO_REUSEADDR )
  3. Warten Sie, bis eine Verbindung akzeptiert wird
  4. Wenn eine Verbindung hergestellt wird, erzeugen Sie ein Arbeiterkind, um Daten zwischen den beiden Adressen zu übertragen.
  5. Der Elternteil akzeptiert weiterhin Verbindungen auf der zweiten Adresse, hat aber die erste Adresse nicht mehr verfügbar:Sie wurde dem ersten Kind gegeben. Von diesem Punkt an kann also nichts Sinnvolles mehr getan werden.