Erro 1040 MySQL: Too many connections, como resolver
Entenda o erro 1040 do MySQL, confira o max_connections, use a conexão reservada ao administrador e siga o roteiro para achar quem ocupa as conexões.
Por Redação Eleven Host · @robson.direitodigital · 29 de outubro de 2026 · 7 min de leitura

Capa da Redação Eleven Host para o guia: Erro 1040 MySQL: Too many connections, como resolver Arte: Eleven Host
O erro 1040 MySQL, "Too many connections", aparece quando o servidor recusa uma nova conexão porque todas as conexões disponíveis já estão em uso por outros clientes. O limite é definido pela variável max_connections.
Este guia explica o que o erro significa, como o MySQL reserva uma conexão extra para o administrador, como ver o limite atual e como investigar quem está ocupando as conexões antes de mexer no número. Os fatos sobre o erro vêm do manual do MySQL 8.4; os comandos de diagnóstico são o roteiro padrão de quem administra o servidor. Os exemplos usam valores fictícios, só para ilustrar.
O que o erro 1040 significa
No manual do MySQL, o erro 1040 tem o símbolo ER_CON_COUNT_ERROR, o SQLSTATE 08004 e a mensagem Too many connections. Em português simples: o servidor tem um número máximo de conexões abertas ao mesmo tempo e esse máximo foi atingido. Quem tenta conectar depois disso recebe a recusa.
Segundo o manual, a mensagem indica que todas as conexões disponíveis estão em uso por outros clientes. Ou seja, a mensagem trata do limite de conexões. Quem aparece na tela com o erro pode ser só a vítima do momento: o cliente que tentou conectar no instante em que as vagas acabaram.
O erro 1040 diz que todas as conexões disponíveis estão em uso por outros clientes.
O limite: a variável max_connections
O limite de conexões simultâneas é a variável de sistema max_connections. Pelo manual do MySQL 8.4, a solução prevista para o erro é aumentar o valor dela. A variável pode ser definida na inicialização do servidor ou em tempo de execução, e você pode ver o valor em uso com o comando abaixo:
SHOW VARIABLES LIKE 'max_connections';
Este guia não cita um número padrão porque o valor em uso no seu servidor é o que importa, e ele aparece na saída do comando.
A conexão extra reservada ao administrador
O manual explica um detalhe útil: o mysqld permite max_connections mais 1 conexões. Essa conexão extra fica reservada a contas com o privilégio CONNECTION_ADMIN (ou com o SUPER, que está obsoleto). O motivo é prático: o administrador consegue entrar mesmo com o limite atingido e usar SHOW PROCESSLIST para diagnosticar o problema.
Passo 1: entre com uma conta administradora e veja quem está conectado
Com a conta que tem o privilégio de administração, abra o cliente de linha de comando e liste as conexões:
SHOW PROCESSLIST;
A saída mostra uma linha por conexão, com o usuário, o host de onde ela veio, o banco em uso, o comando e o tempo. Olhe com atenção para estes pontos:
- Usuário e host repetidos: muitas conexões do mesmo usuário e do mesmo host sugerem uma única aplicação ocupando as vagas.
- Tempo alto: conexões abertas há muito tempo sem fazer nada podem ser conexões esquecidas pela aplicação.
- Consultas longas: conexões presas numa consulta demorada seguram a vaga até ela terminar.
Guarde essa saída antes de reiniciar o servidor. Ela é a pista principal para saber de onde o excesso veio.
Passo 2: confira se o limite está sendo atingido
O manual informa que cada recusa por causa do limite aumenta o contador de status Connection_errors_max_connections. Você pode ler esse contador assim:
SHOW STATUS LIKE 'Connection_errors_max_connections';
Se o número cresce a cada vez que o erro aparece, as recusas estão ligadas ao limite de conexões. Anote o valor, espere o erro acontecer de novo e consulte outra vez: a diferença mostra quantas recusas ocorreram nesse intervalo.
Causas que podem estar por trás do erro
O manual aponta o limite como causa direta, mas o que consome as vagas varia de caso a caso. Estas são situações que podem ocorrer, e cada uma pode produzir o erro:
- Aplicação que abre conexão e não fecha: cada requisição pode deixar uma conexão aberta, e as vagas vão acabando aos poucos.
- Pico de acessos: num momento de muito movimento, mais visitantes podem abrir mais conexões ao mesmo tempo do que o limite permite.
- Consultas lentas: uma consulta que demora segura a conexão por mais tempo, e outras vão se acumulando atrás dela. O guia MySQL lento: como achar as consultas que travam o site mostra como localizar essas consultas.
- Vários sistemas no mesmo banco: site, painel, rotinas agendadas e scripts podem dividir o mesmo limite.
O comando SHOW PROCESSLIST ajuda a separar essas hipóteses: se aparecem muitas conexões paradas, pense em conexão esquecida; se aparecem muitas conexões executando consultas longas, olhe as consultas.
Precisa de um banco de dados? O 11SQL Mini sai a partir de R$ 9,90/mês; confira na loja o que o plano inclui. Conhecer o 11SQL
Passo 3: aumentar max_connections, com cuidado
Como o manual prevê o aumento do max_connections como solução, esse é o caminho quando o servidor realmente precisa atender mais conexões. Em tempo de execução, o comando é este:
SET GLOBAL max_connections = 200;
O valor 200 é apenas um exemplo; escolha o número de acordo com o seu servidor. Esse comando vale até o servidor reiniciar. Para manter o valor depois de uma reinicialização, coloque a linha abaixo na seção [mysqld] do arquivo de configuração do MySQL e reinicie o serviço:
max_connections = 200
Depois, confira com SHOW VARIABLES LIKE 'max_connections'; se o valor novo está valendo.
Entenda
- Entre com uma conta administradora, que tem a conexão extra reservada.
- Rode
SHOW PROCESSLIST;e guarde a saída. - Leia o limite com
SHOW VARIABLES LIKE 'max_connections';. - Confira o contador
Connection_errors_max_connections. - Procure a causa: conexões esquecidas, pico de acessos ou consultas lentas.
- Aumente o limite só depois, e anote o valor novo.
Por que aumentar o limite sem olhar a causa pode não resolver
Subir o max_connections abre mais vagas, mas não explica por que as vagas acabaram. Se a causa é uma aplicação que não fecha as conexões, o número maior pode só adiar o problema: as vagas novas também podem acabar, só que mais tarde.
Há ainda um cuidado de recursos. Cada conexão usa memória do servidor, então um limite muito alto pode pesar na máquina. Em uma VPS, vale acompanhar o consumo; o guia Ver uso de memória no Linux: free, top e htop na VPS mostra como conferir. Se você administra o seu próprio servidor, acompanhe esse consumo de tempos em tempos.
Cuidados para evitar que o erro volte
- Feche as conexões na aplicação: revise o código ou a configuração para que cada conexão aberta seja encerrada ao fim do uso.
- Separe as contas por sistema: um usuário para o site, outro para as rotinas. Assim o
SHOW PROCESSLISTmostra de onde vem cada conexão. - Revise as consultas lentas: consulta que demora menos segura a vaga por menos tempo.
- Anote o que mudou: registre a data, o valor antigo e o novo do
max_connections, para voltar atrás se precisar.
Se o erro vem ao tentar conectar de fora do servidor
Se a mensagem que você vê fala em não conseguir conectar ao servidor, o caso é outro, e o guia Erro 2002 MySQL: não conecta ao servidor, como resolver cobre esse caminho.
Resumo do roteiro de diagnóstico
Para guardar na memória: primeiro entender (o limite foi atingido), depois olhar (quem está conectado), depois medir (o contador de recusas) e só então agir (corrigir a aplicação e, se necessário, aumentar o limite). Essa ordem evita mexer em configuração antes de saber o que acontece.
Se mesmo assim o erro continuar e você usa um serviço da Eleven Host, abra um chamado e informe o horário em que o erro apareceu, a mensagem completa e a saída do SHOW PROCESSLIST, sem incluir senhas.
Quer um servidor próprio para o seu banco de dados? A VPS Plano Bronze sai a partir de R$ 17,00/mês; confira na loja o que o plano inclui. Ver planos de VPS
Perguntas frequentes
O que é o erro 1040 do MySQL?
É o erro "Too many connections" (símbolo ER_CON_COUNT_ERROR, SQLSTATE 08004). Indica que todas as conexões disponíveis estão em uso por outros clientes.
Qual variável define o limite de conexões?
A variável de sistema max_connections. Você vê o valor atual com SHOW VARIABLES LIKE 'max_connections';.
Por que consigo entrar como administrador quando o erro acontece?
Porque o mysqld permite max_connections mais 1 conexões, e a extra é reservada a contas com o privilégio CONNECTION_ADMIN (ou o SUPER, obsoleto). Assim o administrador pode usar SHOW PROCESSLIST.
O SET GLOBAL max_connections vale depois de reiniciar o servidor?
Não. Ele vale até o servidor reiniciar. Para manter o valor, coloque max_connections na seção [mysqld] do arquivo de configuração e reinicie o serviço.
Aumentar o limite resolve o erro?
Pode resolver, e o manual prevê esse aumento como solução. Mas, se a causa é uma aplicação que não fecha as conexões, o aumento pode só adiar o problema. Por isso vale olhar a causa antes.