¿Cómo puedo determinar el método de conexión utilizado por un cliente MySQL?

10

Cuando uso un cliente MySQL (por ejemplo mysql), ¿cómo puedo determinar si se conectó al servidor usando un archivo de socket Unix o usando TCP / IP?

Eugene Yarmash
fuente

Respuestas:

13

Encontrar el transporte

Intente usar netstat -ln | grep 'mysql'y puede ver cómo está conectado por la salida. si tienes acceso a shell

En Unix, los programas MySQL tratan el nombre de host localhost especialmente, de una manera que probablemente sea diferente de lo que espera en comparación con otros programas basados ​​en la red. Para las conexiones a localhost, los programas MySQL intentan conectarse al servidor local utilizando un archivo de socket Unix.

Esto ocurre incluso si se da una opción --porto -Ppara especificar un número de puerto.

Si Yould gustaría saber el tipo de conexión dentro de la línea de comandos mysql, utilice el comando '\ s' (estado).

mysql> \s

La salida tendría una línea como una de las siguientes (en Unix).

Connection:             127.0.0.1 via TCP/IP

o

Connection:             Localhost via UNIX socket

Forzando un transporte particular

Para garantizar que el cliente realice una conexión TCP / IP al servidor local, use --hosto -hpara especificar un valor de nombre de host de 127.0.0.1, o la dirección IP o el nombre del servidor local. También puede especificar el protocolo de conexión explícitamente, incluso para localhost, utilizando la --protocol=TCPopción Por ejemplo:

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

La --protocol={TCP|SOCKET|PIPE|MEMORY}opción especifica explícitamente un protocolo a utilizar para conectarse al servidor. Es útil cuando los otros parámetros de conexión normalmente harían que se usara un protocolo diferente al que desea. Por ejemplo, las conexiones en Unix a localhost se realizan utilizando un archivo de socket Unix de forma predeterminada:

shell> mysql --host=localhost

Para forzar el uso de una conexión TCP / IP, especifique una --protocolopción:

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

Tipos de protocolo:

  • TCP: conexión TCP / IP al servidor local o remoto. Disponible en todas las plataformas.
  • SOCKET: conexión de archivo de socket Unix al servidor local. Disponible solo en Unix.
  • TUBO: Conexión de canalización con nombre al servidor local o remoto. Disponible solo en Windows.
  • MEMORIA: Conexión de memoria compartida al servidor local. Disponible solo en Windows.

Una conexión de archivo de socket Unix es más rápida que TCP / IP, pero solo se puede usar cuando se conecta a un servidor en la misma computadora.

harish.venkat
fuente
@Anil: gracias, fue una excelente respuesta.
Eugene Yarmash