Pular para o conteúdo
Qual Meu IP

Bancos de dados · TCP

Porta 3306: MySQL, acesso remoto e erros de conexão

A porta 3306 (TCP) é a do MySQL e do MariaDB, usada por sites, lojas virtuais e sistemas para falar com o banco de dados. O ideal é que ela responda só ao próprio servidor ou à rede interna. Para acessar de fora, prefira túnel SSH ou VPN em vez de abrir a 3306 para a internet.

Risco altoNunca exponhaAtualizado em
Testar a porta 3306 no meu IPComo abrir portas no roteador

Para que serve a porta 3306

WordPress, lojas virtuais e boa parte dos sistemas web guardam os dados em MySQL ou MariaDB. Quando o site e o banco rodam no mesmo servidor, a conexão nem precisa sair da máquina. A 3306 só entra em cena na rede quando a aplicação e o banco estão em servidores diferentes ou quando alguém administra o banco à distância.

Quem decide em quais interfaces o servidor escuta é a variável bind_address. No MySQL 8.4 o padrão é *, todas as interfaces IPv4 e IPv6, mas pacotes de algumas distribuições Linux vêm configurados para escutar só em 127.0.0.1.

Quem usa a porta 3306 na prática:

  • Sites WordPress, lojas virtuais e sistemas web
  • Ferramentas de administração (MySQL Workbench, DBeaver, HeidiSQL)
  • Réplicas entre servidores de banco
  • Aplicações em servidores separados do banco

O que diz o registro da IANA

A 3306 é usada em TCP pelo protocolo clássico do MySQL, adotado também pelo MariaDB. O MySQL tem ainda o X Protocol, na TCP 33060.

Registros da porta 3306 na IANA
mysqlProtocoloTCPDescrição no registroMySQLReferência
mysqlProtocoloUDPDescrição no registroMySQLReferência

É seguro deixar a porta 3306 aberta?

Bancos MySQL alcançáveis pela internet recebem tentativas automáticas de login com usuários comuns como root. Uma senha fraca entrega todos os dados, que podem ser copiados, apagados ou sequestrados. Além disso, o tráfego só fica cifrado se cliente e servidor estiverem configurados para TLS.

Como acessar o serviço sem expor a porta 3306

Para acessar o banco de fora sem expor a porta, use um túnel SSH: ssh -L 3306:127.0.0.1:3306 usuario@servidor e conecte o seu programa em 127.0.0.1. Assim só a porta 22, protegida por chave, fica acessível, ou nenhuma, se você entrar por VPN.

Se a aplicação precisa mesmo de acesso direto, crie no MySQL um usuário que só pode entrar a partir do IP da aplicação, libere a 3306 no firewall apenas para esse IP e exija TLS na conexão. Em hospedagens com painel, como o cPanel, essa liberação costuma ficar numa opção de acesso remoto ao MySQL em que você cadastra os IPs autorizados.

Como testar a porta 3306

O verificador de portas deve mostrar a 3306 fechada no seu IP público. Para testar a partir do servidor da aplicação, use nc -vz ip-do-banco 3306 ou Test-NetConnection -ComputerName ip-do-banco -Port 3306.

Problemas comuns com a porta 3306

“Host 'x.x.x.x' is not allowed to connect to this MySQL server”

A conexão chegou ao servidor, mas não existe usuário autorizado para aquele IP de origem. Crie ou ajuste o usuário com o host correto (por exemplo, 'app'@'10.0.0.5') em vez de liberar '%'.

“Can't connect to MySQL server” com tempo esgotado

O servidor não está escutando na interface de rede (bind_address em 127.0.0.1), o firewall bloqueia a 3306 ou a hospedagem não permite conexões externas. Verifique nessa ordem.

Porta 3306 bloqueada na hospedagem

Muitas hospedagens compartilhadas só aceitam conexões ao banco a partir do próprio servidor ou de IPs cadastrados no painel. Cadastre o seu IP (o atual aparece em meu IP) ou use o phpMyAdmin oferecido pela hospedagem.

Portas relacionadas

Ver a tabela completa de portas

Ferramentas e guias relacionados

Perguntas frequentes sobre a porta 3306

Porta 3306 bloqueada: o que fazer?
Descubra onde está o bloqueio. Se o erro é de tempo esgotado, confira o bind_address do servidor, o firewall e se a hospedagem permite conexões externas. Se o erro diz que o host não tem permissão, a conexão chegou e falta autorizar o usuário para o seu IP. Para acesso eventual, um túnel SSH evita abrir a porta.
MySQL e MariaDB usam a mesma porta?
Sim. O MariaDB mantém compatibilidade com o protocolo do MySQL e também usa a TCP 3306 por padrão.

Fontes e referências

  1. IANA: Service Name and Transport Protocol Port Number Registry
  2. MySQL: Port Reference Tables
  3. MySQL 8.4 Reference Manual: variável bind_address

Conteúdo revisado em pela equipe do Qual Meu IP.