Ao usar um cliente MySQL (por exemplo mysql
), como posso determinar se ele se conectou ao servidor usando um arquivo de soquete Unix ou usando TCP / IP?
Tente usar netstat -ln | grep 'mysql'
e você pode ver como ele é conectado pela saída. se você tiver acesso ao shell
No Unix, os programas MySQL tratam o nome do host localhost especialmente, de uma maneira que provavelmente é diferente do que você espera em comparação com outros programas baseados em rede. Para conexões com o host local, os programas MySQL tentam se conectar ao servidor local usando um arquivo de soquete Unix.
Isso ocorre mesmo se uma opção --port
ou -P
for fornecida para especificar um número de porta.
Se você deseja conhecer o tipo de conexão na CLI do mysql, use o comando '\ s' (status).
mysql> \s
A saída teria uma linha como uma das seguintes (no Unix).
Connection: 127.0.0.1 via TCP/IP
ou
Connection: Localhost via UNIX socket
Para garantir que o cliente faça uma conexão TCP / IP com o servidor local, use --host
ou -h
para especificar um valor de nome de host 127.0.0.1 ou o endereço IP ou o nome do servidor local. Você também pode especificar o protocolo de conexão explicitamente, mesmo para o host local, usando a --protocol=TCP
opção Por exemplo:
shell> mysql --host=127.0.0.1
shell> mysql --protocol=TCP
A --protocol={TCP|SOCKET|PIPE|MEMORY}
opção especifica explicitamente um protocolo a ser usado para se conectar ao servidor. É útil quando os outros parâmetros de conexão normalmente fazem com que um protocolo seja usado diferente daquele que você deseja. Por exemplo, as conexões no Unix para o host local são feitas usando um arquivo de soquete Unix por padrão:
shell> mysql --host=localhost
Para forçar uma conexão TCP / IP a ser usada, especifique uma --protocol
opção:
shell> mysql --host=localhost --protocol=TCP
Uma conexão de arquivo de soquete Unix é mais rápida que TCP / IP, mas pode ser usada apenas ao se conectar a um servidor no mesmo computador.