Um cliente MySQL pode se conectar ao processo servidor rodando na mesma máquina. Esta seria uma conexão local. Um cliente ainda pode se conectar em um processo rodando em outra máquina, sendo assim uma conexão remota.
O MySQL suporta conexões entre servidor e cliente usando diversos protocolos, como mostrado logo abaixo:
Protocolo | Tipos de Conexão | Sistema Operacional Suportado |
TCP/IP | Local e remota | Todos |
Unix socket file | Apenas local | Apenas Unix |
Named pipe | Apenas local | Apenas Windows |
Shared memory | Apenas local | Apenas Windows |
Alguns protocolos podem se conectar a ambos (processo servidor local ou remoto). Alguns apenas para conexões locais. E alguns ainda são exclusivos de um único sistema operacional.
- Conexões do tipo TCP/IP são suportadas por qualquer servidor MySQL, a menos que o servidor seja iniciado com o parâmetro –skip-networking.
- Conexões do tipo Unix socket file são suportadas por todos os processos servidores Unix.
- Conexões do tipo named pipe são suportadas apenas no Windows. E apenas se for utilizado um dos processos servidores que possua -nt no seu nome (mysql-nt, mysql-max-nt). Named pipes estão por padrão desabilitados. Para habilita-los é necessário iniciar o processo servidor -nt com a opção –enable-named-pipe.
- Conexões do tipo shared memory são suportadas apenas no Windows e estão desabilitadas por padrão. Para habilita-las é necessário iniciar o processo servidor com a opção –shared-memory.
Na perspectiva do cliente:
- Um cliente executando no mesmo host onde o processo servidor, pode se conectar por qualquer meio que o host permita. Se o cliente está rodando num host diferente, a conexão obrigatoriamente deve ser feita através do TCP/IP.
Os diferentes métodos de conexão tem eficiências diferentes:
- Em muitas configurações Windows a conexão por named pipe é mais lenta que TCP/IP. Só é utilizada se for escolhida utilizada a opção --skip-networking para desabilitar as conexões TCP/IP, ou quando for possível confirmar que as conexões MySQL são mais rápidas para o seu ambiente em particular.
- No Unix, uma conexão do tipo unix socket file, provê uma maior performance do que conexões TCP/IP.
- Em qualquer plataforma, conexões do tipo ODBC são mais lentas do que uma conexão estabelecida diretamente utilizando a library do driver C nativo. Isso ocorre porque o ODBC está na camada de cima da library C, o que adiciona sobrecarga.
- Em qualquer plataforma uma conexão feita via MySQL Connector /J tem uma velocidade compatível do que uma efetuada pela library do driver C nativo.