Erro 2003 MySQL: Can't connect to server, como investigar
Entenda o erro 2003 do MySQL, leia o número entre parênteses e investigue em ordem: serviço, endereço e porta de escuta e liberação do acesso remoto.
Por Redação Eleven Host · @robson.direitodigital · 31 de outubro de 2026 · 8 min de leitura

Capa da Redação Eleven Host para o guia: Erro 2003 MySQL: Can't connect to server, como investigar Arte: Eleven Host
O erro 2003 MySQL, Can't connect to MySQL server, diz que o cliente não conseguiu abrir a conexão TCP com o servidor no endereço e na porta indicados. O problema está antes do login: a conexão não chegou ao servidor.
Este guia mostra como ler a mensagem e o número entre parênteses, a diferença para o erro 2002, e três checagens em ordem: o MySQL está rodando, em qual endereço e porta ele escuta e, se for o caso, como liberar o acesso remoto com cuidado. No fim, explica por que o erro 1045 é outra história. Os fatos vêm do manual do MySQL 8.4 e da documentação do Ubuntu; os endereços dos exemplos são fictícios.
O que a mensagem diz
Na referência de erros de cliente do MySQL, o erro 2003 tem o símbolo CR_CONN_HOST_ERROR e esta mensagem:
Can't connect to MySQL server on '%s:%u' (%d)
Os campos são, nesta ordem, o servidor, a porta e um número, que é o código do sistema para o problema. Na tela, ela aparece assim, com um exemplo do próprio manual:
ERROR 2003: Can't connect to MySQL server on 'host_name' (111)
Dois pontos ajudam a ler:
- Erro de cliente: a referência explica que as mensagens desse grupo nascem dentro da biblioteca cliente do MySQL, e não no servidor.
- SQLSTATE HY000: para erros de cliente, a referência diz que o valor é
HY000(erro geral), então ele não ajuda a diferenciar um erro do outro.
O manual descreve o 2003 como uma conexão de rede recusada e manda checar três coisas: se há um servidor MySQL rodando, se ele aceita conexões de rede e se a porta que você usou é a configurada no servidor.
O número entre parênteses
O manual usa o 111 no exemplo. Esse número é o código de erro do sistema operacional. A página de manual do Ubuntu sobre errno define ECONNREFUSED como "Connection refused", ETIMEDOUT como "Connection timed out" e EHOSTUNREACH como "Host is unreachable". No Linux, esses nomes correspondem aos números 111, 110 e 113. Os números 110 e 113 são do Linux, e não da documentação do MySQL.
- 111 (recusado): a máquina respondeu, mas nada escuta naquele endereço e porta. Pode ser o MySQL parado, a porta errada ou o MySQL ouvindo só em
127.0.0.1. - 110 (tempo esgotado): ninguém respondeu. É a leitura de um firewall que descarta o pedido ou de um endereço errado.
- 113 (host inalcançável): o sistema não achou caminho até a máquina.
O erro 2003 quer dizer que a conexão não chegou ao MySQL. Se chegou e foi recusada por causa da conta, o erro é outro: o 1045.
Erro 2002 x erro 2003
Os dois começam com "Can't connect", mas a conexão é diferente. O 2002 tem o símbolo CR_CONNECTION_ERROR e a mensagem Can't connect to local MySQL server through socket '%s' (%d). Segundo o manual, o cliente usa um arquivo de socket Unix quando você não informa o host ou quando informa o nome especial localhost, e esse socket só serve para conexões na mesma máquina.
- 2002: a conexão era local, por socket.
- 2003: a conexão era por rede (TCP), com host ou IP e porta.
Se a sua mensagem fala em socket, o assunto é o 2002, que o guia Erro 2002 MySQL: não conecta ao servidor, como resolver detalha. Se ela traz um host e uma porta, siga os passos abaixo.
1º passo: o MySQL está rodando?
O manual do MySQL começa pela pergunta mais simples: há um processo chamado mysqld no servidor? Num Ubuntu, verifique o serviço:
sudo systemctl status mysql
Se o serviço estiver parado, não há servidor para aceitar a conexão. Para ligar o serviço e ver o que cada comando do systemctl faz, veja o guia systemctl: como iniciar, parar e ver serviços na VPS. O manual também sugere testar a porta de outra máquina com telnet some_host 3306: a resposta "Connection refused" indica que não há servidor rodando naquela porta.
2º passo: em qual endereço e porta ele escuta?
Com o serviço no ar, veja onde ele escuta. A porta padrão do MySQL é a 3306, e o cliente precisa usar a porta configurada no servidor (variável port). O comando ss lista os sockets TCP em escuta (-t TCP, -l só escutando, -n sem resolver nomes, -p mostra o processo):
sudo ss -tlnp | grep 3306
Leia a coluna do endereço local:
127.0.0.1:3306: o MySQL aceita conexões só da própria máquina.0.0.0.0:3306ou*:3306: ele escuta em todas as interfaces.
Duas configurações explicam um servidor que não aceita conexões de rede. A primeira é skip_networking: se o servidor foi iniciado com ela ligada, ele não aceita conexões TCP/IP de jeito nenhum. A segunda é o bind_address em 127.0.0.1, que faz o servidor escutar só na interface local e recusar conexões remotas.
No Ubuntu 24.04, o pacote mysql-server instala o MySQL 8.0, e não o 8.4. Segundo o repositório do pacote, o arquivo /etc/mysql/mysql.conf.d/mysqld.cnf vem com bind-address = 127.0.0.1. Assim, se o seu servidor é um Ubuntu 24.04 com o pacote padrão, o MySQL só aceita conexão da própria máquina até você mudar isso. O padrão do MySQL fora do pacote do Ubuntu é *, todas as interfaces.
Quer conhecer o banco de dados na nuvem 11SQL? 11SQL Mini a partir de R$ 9,90/mês; confira na loja o que cada plano inclui. Conhecer o 11SQL
3º passo: liberar o acesso remoto com cuidado
Se o seu objetivo é conectar de outra máquina, a documentação do Ubuntu manda trocar o bind-address pelo IP do servidor (o exemplo dela é bind-address = 192.168.0.5) e reiniciar o serviço:
sudo systemctl restart mysql.service
O bind_address aceita *, 0.0.0.0 (todas as interfaces IPv4), ::, um IP específico ou uma lista de IPs separados por vírgula, sem curingas. Com o firewall ajustado (veja logo abaixo), teste de outra máquina, com o IP do servidor:
mysql -h 203.0.113.10 -P 3306 -u usuario -p
Se um firewall bloquear a porta 3306, o manual manda verificar isso. Num Ubuntu com o ufw, esta regra libera a porta só para o IP de quem vai conectar, e o segundo comando confere as regras:
sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp
sudo ufw status
Troque 203.0.113.10 pelo IP da máquina que vai se conectar.
Alerta de segurança
Liberar a 3306 sem limitar o endereço (ufw allow 3306/tcp) expõe o banco à internet inteira. A recomendação é liberar só o IP de quem precisa ou usar um túnel SSH. O manual faz um alerta parecido sobre a conta com host '%': use-a apenas para descobrir de onde você conecta e troque pelo host real depois, porque ela deixa aquele usuário conectar a partir de hosts não previstos.
A porta 33060 é do protocolo X (mysqlx), que é outro protocolo. O cliente mysql comum usa a 3306.
Quando a rede funciona: o erro 1045 é outra história
Depois que a conexão chega ao servidor, o erro muda. O exemplo do manual é ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO). Outra mensagem parecida é "Host ... is not allowed to connect to this MySQL server", que aparece quando a conta não tem permissão para o host de onde você conecta.
Resumindo pelas mensagens: o 2003 diz que a conexão não chegou ao servidor (rede, porta ou serviço), e o 1045 ou o "is not allowed to connect" dizem que chegou e a conta recusou. Para o acesso negado, veja o guia Erro 1045 MySQL: Access denied for user, como resolver. Para criar o usuário certo e dar a permissão, veja Criar usuário MySQL: como dar permissões com GRANT.
Checklist do erro 2003
- Leia o número entre parênteses: 111 é conexão recusada, 110 é tempo esgotado e 113 é host inalcançável (números do Linux).
- Confirme que a mensagem traz host e porta; se falar em socket, é o 2002.
- Rode
sudo systemctl status mysqle confira se o serviço está ativo. - Rode
sudo ss -tlnp | grep 3306e veja se o endereço é127.0.0.1ou0.0.0.0. - Confira
skip_networkinge obind-addressem/etc/mysql/mysql.conf.d/mysqld.cnf. - Confira a porta usada pelo cliente (a padrão é 3306).
- Libere a 3306 no firewall só para o IP de quem conecta.
- Se o erro mudou para 1045, o problema agora é a conta.
Quer conhecer a VPS da Eleven Host? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Conhecer a VPS
Perguntas frequentes
O que significa o erro 2003 do MySQL?
Que o cliente não conseguiu abrir a conexão de rede com o servidor, no host e na porta da mensagem. É um erro de cliente, gerado na biblioteca cliente do MySQL.
Qual a diferença entre o erro 2002 e o 2003?
O 2002 acontece em conexão local por socket. O 2003 acontece em conexão por rede (TCP), com host ou IP e porta.
O que significa o número entre parênteses no erro 2003?
É o código de erro do sistema. O manual do MySQL usa o 111 no exemplo. No Linux, 111 é conexão recusada, 110 é tempo esgotado e 113 é host inalcançável.
Por que o MySQL do Ubuntu não aceita conexão remota?
No Ubuntu 24.04 com o pacote padrão, porque o arquivo de configuração do pacote traz bind-address = 127.0.0.1, que limita o MySQL a conexões da própria máquina. Troque pelo IP do servidor, reinicie o serviço e libere a porta só para quem precisa.