Jak mogę określić metodę połączenia używaną przez klienta MySQL?

10

W przypadku korzystania z klienta MySQL (np. mysql) W jaki sposób mogę ustalić, czy jest on połączony z serwerem przy użyciu pliku gniazda Unix, czy przy użyciu protokołu TCP / IP?

Eugene Yarmash
źródło

Odpowiedzi:

13

Znalezienie transportu

Spróbuj użyć, netstat -ln | grep 'mysql'a zobaczysz, jak jest połączony z wyjściem. jeśli masz dostęp do powłoki

W Uniksie programy MySQL traktują nazwę hosta localhost specjalnie w sposób, który prawdopodobnie różni się od oczekiwanego w porównaniu z innymi programami sieciowymi. W przypadku połączeń z hostem lokalnym programy MySQL próbują połączyć się z serwerem lokalnym przy użyciu pliku gniazda Unix.

Dzieje się tak, nawet jeśli podano opcję --portlub, -Paby określić numer portu.

Jeśli chcesz poznać typ połączenia z poziomu interfejsu mysql CLI, użyj polecenia „\ s” (status).

mysql> \s

Dane wyjściowe miałyby linię podobną do jednej z poniższych (w systemie Unix).

Connection:             127.0.0.1 via TCP/IP

lub

Connection:             Localhost via UNIX socket

Wymuszenie określonego transportu

Aby upewnić się, że klient nawiązuje połączenie TCP / IP z serwerem lokalnym, użyj --hostlub, -haby określić wartość nazwy hosta 127.0.0.1 lub adres IP lub nazwę serwera lokalnego. Możesz także jawnie określić protokół połączenia, nawet dla localhost, używając --protocol=TCPopcji. Na przykład:

shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP

Ta --protocol={TCP|SOCKET|PIPE|MEMORY}opcja wyraźnie określa protokół używany do łączenia się z serwerem. Jest to przydatne, gdy inne parametry połączenia normalnie spowodowałyby użycie protokołu innego niż ten, który chcesz. Na przykład połączenia Unixa z hostem lokalnym są domyślnie wykonywane przy użyciu pliku gniazda Unix:

shell> mysql --host=localhost

Aby zamiast tego wymusić użycie połączenia TCP / IP, określ --protocolopcję:

shell> mysql --host=localhost --protocol=TCP

Typy protokołów:

  • TCP: połączenie TCP / IP z lokalnym lub zdalnym serwerem. Dostępne na wszystkich platformach.
  • GNIAZDO: połączenie pliku gniazda UNIX z lokalnym serwerem. Dostępne tylko na Uniksie.
  • PIPE: Połączenie z potokiem nazwanym do lokalnego lub zdalnego serwera. Dostępne tylko w systemie Windows.
  • PAMIĘĆ: Połączenie pamięci współużytkowanej z serwerem lokalnym. Dostępne tylko w systemie Windows.

Połączenie plików gniazda UNIX jest szybsze niż TCP / IP, ale można go używać tylko podczas łączenia z serwerem na tym samym komputerze.

harish.venkat
źródło
@Anil: dzięki, zrobiłeś to doskonałą odpowiedź.
Eugene Yarmash