Como posso determinar o método de conexão usado por um cliente MySQL?

10

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?

Eugene Yarmash
fonte

Respostas:

13

Encontrando o transporte

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 --portou -Pfor 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

Forçando um transporte particular

Para garantir que o cliente faça uma conexão TCP / IP com o servidor local, use --hostou -hpara 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=TCPopçã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 --protocolopção:

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

Tipos de protocolo:

  • TCP: conexão TCP / IP ao servidor local ou remoto. Disponível em todas as plataformas.
  • SOQUETE: Conexão de arquivo de soquete Unix ao servidor local. Disponível apenas no unix.
  • TUBULAÇÃO: Conexão de pipe nomeado ao servidor local ou remoto. Disponível apenas no Windows.
  • MEMÓRIA: Conexão de memória compartilhada ao servidor local. Disponível apenas no Windows.

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.

harish.venkat
fonte
@ Anil: obrigado, você fez uma excelente resposta.
Eugene Yarmash