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?
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 --port
o -P
para 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
Para garantizar que el cliente realice una conexión TCP / IP al servidor local, use --host
o -h
para 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=TCP
opció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 --protocol
opción:
shell> mysql --host=localhost --protocol=TCP
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.