При использовании клиента MySQL (например mysql
), как я могу определить, подключен ли он к серверу с помощью файла сокета Unix или с помощью TCP / IP?
Попробуйте использовать, 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
Подключение к файлу сокета Unix происходит быстрее, чем TCP / IP, но его можно использовать только при подключении к серверу на том же компьютере.