Как я могу определить метод подключения, используемый клиентом MySQL?

10

При использовании клиента MySQL (например mysql), как я могу определить, подключен ли он к серверу с помощью файла сокета Unix или с помощью TCP / IP?

Евгений Ярмаш
источник

Ответы:

13

В поисках транспорта

Попробуйте использовать, netstat -ln | grep 'mysql'и вы можете увидеть, как это связано с выходом. если у вас есть доступ к оболочке

В Unix программы MySQL обрабатывают имя хоста localhost специально, что, вероятно, отличается от того, что вы ожидаете по сравнению с другими сетевыми программами. Для соединений с localhost программы MySQL пытаются соединиться с локальным сервером с помощью файла сокета Unix.

Это происходит, даже если задана опция --portили -Pдля указания номера порта.

Если yould как знать тип соединения с в интерфейсе командной строки MySQL, используйте «\» ы команды (статус).

mysql> \s

Вывод будет иметь следующую строку (в Unix):

Connection:             127.0.0.1 via TCP/IP

или

Connection:             Localhost via UNIX socket

Форсирование определенного транспорта

Чтобы убедиться, что клиент устанавливает соединение TCP / IP с локальным сервером, используйте --hostили, -hчтобы указать значение имени хоста 127.0.0.1, или IP-адрес или имя локального сервера. Вы также можете указать протокол соединения явно, даже для localhost, используя --protocol=TCPопцию. Например:

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

--protocol={TCP|SOCKET|PIPE|MEMORY}Опция явно указывает протокол, используемый для подключения к серверу. Это полезно, когда другие параметры соединения обычно вызывают использование протокола, отличного от того, который вы хотите. Например, соединения в Unix с localhost по умолчанию создаются с использованием файла сокета Unix:

shell> mysql --host=localhost

Чтобы принудительно использовать вместо него соединение TCP / IP, укажите --protocolпараметр:

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

Типы протоколов:

  • TCP: TCP / IP-соединение с локальным или удаленным сервером. Доступно на всех платформах.
  • SOCKET: Unix файл подключения сокета к локальному серверу. Доступно только в Unix.
  • ТРУБА: подключение по именованному каналу к локальному или удаленному серверу. Доступно только на окнах.
  • ПАМЯТЬ: Соединение с общей памятью на локальный сервер. Доступно только на окнах.

Подключение к файлу сокета Unix происходит быстрее, чем TCP / IP, но его можно использовать только при подключении к серверу на том же компьютере.

harish.venkat
источник
@Anil: спасибо, ты сделал это отличный ответ.
Евгений Ярмаш