Habilitar o acesso remoto ao MySQL envolve a configuração de permissões de usuário, ajustes no arquivo de configuração do serviço e liberação de tráfego na rede. Siga este guia técnico para realizar o procedimento com segurança.
1. Configuração de Usuários no Banco de Dados
Por padrão, o MySQL restirnge o acesso ao localhost. É necessário criar ou alterar um usuário para aceitar conexões de IPs externos.
Opção A: Criar um novo usuário dedicado
-- Acesse o terminal do MySQL: mysql -u root -p
-- Criação do usuário para qualquer IP (%) ou IP específico
CREATE USER 'dev_externo'@'%' IDENTIFIED BY 'SenhaSegura_2024';
-- Atribuição de privilégios (ajuste conforme a necessidade de segurança)
GRANT ALL PRIVILEGES ON *.* TO 'dev_externo'@'%' WITH GRANT OPTION;
-- Atualização da tabela de permissões
FLUSH PRIVILEGES;
Opção B: Modificar o usuário root (Não recomendado para produção)
-- Alterar a restrição de host do root para permitir qualquer origem
UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
2. Ajuste do Arquivo de Configuração (bind-address)
O servidor MySQL precisa ser instruído a escutar as interfaces de rede além da interface de loopback local.
- Linux: Geralmente em
/etc/mysql/mysql.conf.d/mysqld.cnfou/etc/my.cnf. - Windows: Localizado no diretório de instalação, como
my.ini.
Localize a seção [mysqld] e modifique o parâmetro bind-address:
[mysqld]
# Altere de 127.0.0.1 para 0.0.0.0 para aceitar conexões de qualquer interface
bind-address = 0.0.0.0
3. Reinicialização do Serviço
Para que as alterações no arquivo de configuração entrem em vigor, reinicie o daemon do MySQL:
# Sistemas baseados em Ubuntu/Debian
sudo systemctl restart mysql
# Sistemas baseados em CentOS/RHEL
sudo systemctl restart mysqld
4. Configuração do Firewall do Sistema
Certifique-se de que a porta padrão 3306 esteja aberta para tráfego TCP.
Usando UFW (Ubuntu)
sudo ufw allow 3306/tcp
sudo ufw reload
Usando Firewalld (CentOS)
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
5. Verificação da Conexão
Tente realizar o acesso a partir de uma máquina externa utilizando o cliente MySQL:
mysql -h IP_DO_SERVIDOR -u dev_externo -p
Resolução de Problemas Comuns
- Erro 2003 (HY000): Geralmente indica que o MySQL não está ouvindo na porta (verifique o
bind-address) ou o firewall está bloqueando o pacote. - Erro 1130 (HY000): O host de origem não tem permissão para conectar. Verifique se o caractere curinga
'%'foi aplicado corretamente na tabelamysql.user. - Erro 1045 (28000): Acesso negado por senha incorreta ou falta de privilégios para o banco de dados específico.
Boas Práticas de Segurança
- Privilégio Mínimo: Em vez de
GRANT ALL, conceda apenas os comandos necessários (ex:SELECT, INSERT, UPDATE). - Restrição por IP: Substitua o
'%'pelo endereço IP real da máquina cliente para evitar ataques de força bruta de origens desconhecidas. - Criptografia: Considere forçar o uso de SSL para conexões remotas em redes públicas.