sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg knytte en lokal unix-socket til en inet-socket?

Vend rækkefølgen af ​​dine argumenter til socat , og det virker.

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

Dette instruerer socat til

  1. Lyt på TCP-port 6666 (med SO_REUSEADDR )
  2. Vent med at acceptere en forbindelse
  3. Når der oprettes en forbindelse, forgrenes. I barnet skal du fortsætte nedenstående trin. Gå til 2.
  4. i forælderen
  5. Åbn en UNIX-domæneforbindelse til /var/lib/mysql/mysql.sock stikkontakt.
  6. Overfør data mellem de to endepunkter, og afslut derefter.

At skrive det omvendt

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

virker ikke, fordi dette instruerer socat til

  1. Åbn en UNIX-domæneforbindelse til /var/lib/mysql/mysql.sock stikkontakt.
  2. Lyt på TCP-port 6666 (med SO_REUSEADDR )
  3. Vent med at acceptere en forbindelse
  4. Når der oprettes forbindelse, skal du få et arbejderbarn til at overføre data mellem de to adresser.
  5. Forælderen fortsætter med at acceptere forbindelser på den anden adresse, men har ikke længere den første adresse tilgængelig:den blev givet til det første barn. Så der kan ikke gøres noget brugbart fra dette tidspunkt.


  1. Hvordan er det indre af en udarbejdet erklæring?

  2. Sådan eksporteres en database ved hjælp af kommandolinjen

  3. Hvordan synkroniseres to tabeller med forskellige MySQL-databaser på den samme maskine?

  4. Mere robuste kollationer med ICU-understøttelse i PostgreSQL 10