Como Configurar e Habilitar o Acesso Remoto no Servidor MySQL

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.cnf ou /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 tabela mysql.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

  1. Privilégio Mínimo: Em vez de GRANT ALL, conceda apenas os comandos necessários (ex: SELECT, INSERT, UPDATE).
  2. 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.
  3. Criptografia: Considere forçar o uso de SSL para conexões remotas em redes públicas.

Tags: MySQL database SQL NetworkSecurity LinuxServer

Publicado em 7-21 08:46