Como permitir conexões remotas ao MySQL

Se você estiver trabalhando com um banco de dados MySQL(MySQL database) , já está ciente dos desafios que enfrenta para manter seu banco de dados seguro. De tentativas de invasão de banco de dados usando injeções de SQL a ataques de força bruta, é difícil manter seus dados seguros, especialmente se você estiver trabalhando com um banco de dados remotamente.

Existem maneiras de configurar um servidor SQL para permitir conexões remotas, mas você precisa ter cuidado, pois permitir conexões remotas em um servidor MySQL pode tornar seu banco de dados um alvo fácil para hackers. Se você deseja permitir conexões remotas seguras a um banco de dados MySQL , aqui está o que você precisa saber.

Antes de você começar(Before You Begin)

Antes de fazer qualquer alteração no banco de dados MySQL , é importante fazer backup do banco(backup your database) de dados , principalmente se estiver trabalhando em um servidor de produção (um servidor em uso ativo). Quaisquer alterações feitas em seu banco de dados ou no servidor que o hospeda podem resultar em séria perda de dados se algo der errado.

Você também pode descobrir que as alterações nas conexões do seu servidor podem impedir que você o acesse posteriormente. Se isso acontecer, pode ser necessário consultar um administrador do servidor para obter suporte adicional. Uma boa idéia é testar quaisquer alterações em um servidor MySQL executado localmente para verificar se suas alterações funcionam antes de experimentá-las remotamente.(MySQL)

Também é provável que, se você estiver fazendo alterações em um servidor remoto, precise de uma maneira segura de se conectar e fazer alterações. O SSH (Secure Shell)(SSH (Secure Shell)) geralmente é a melhor maneira de fazer isso, pois permite que você se conecte ao seu servidor remoto. Você também pode usar o SSH para se conectar a servidores em sua rede local, como aqueles hospedados em um Raspberry Pi(hosted on a Raspberry Pi) .

Este guia o guiará pelas etapas para configurar o MySQL para permitir conexões remotas, mas primeiro você precisará garantir que tenha acesso direto ou remoto ao servidor que hospeda seu servidor MySQL .

Suponha(Suppose) que você não tenha acesso remoto ao seu servidor via SSH (por exemplo). Nesse caso, você não poderá configurar seu banco de dados MySQL para permitir conexões remotas diretamente, a menos que sua conta mySQL raiz já permita conexões remotas. Portanto, você precisará estabelecer essa conexão primeiro antes de prosseguir.

Editando seu arquivo de configuração MySQL(Editing Your MySQL Configuration File)

A primeira etapa na configuração do MySQL para permitir conexões remotas é editar o arquivo de configuração do MySQL . Nesse estágio, este guia assumirá que você já se conectou ao servidor, PC ou Mac que hospeda seu banco de dados mySQL remotamente e tem acesso ao console. 

Alternativamente, você pode configurar um servidor MySQL local usando um terminal aberto no Mac ou Linux ou um editor de texto no Windows .

  1. Para começar, use seu editor de texto de console preferido para editar seu arquivo de banco de dados MySQL . No Linux , digite sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf em um terminal ou janela SSH para editar este arquivo usando o editor nano (supondo que seu banco de dados MySQL esteja no local padrão)

  1. Se você estiver executando o Windows(Windows) , abra o Explorador de Arquivos(File Explorer) e acesse a pasta que contém sua instalação do MySQL (ex. C:/Program Files/MySQL/MySQL Server 8.0 ). Abra o arquivo my.ini usando seu editor de texto padrão (por exemplo , Bloco(Notepad) de Notas ) clicando duas vezes na entrada. Se não estiver lá, crie o arquivo primeiro(create the file first) .

  1. No Mac , abra uma janela de terminal e digite sudo nano /usr/local/etc/my.cnf . Este é o arquivo de configuração padrão do MySQL se você instalou o MySQL usando homebrew(using homebrew) .

Os locais mencionados acima são os locais padrão para os arquivos de configuração do MySQL . Se esses comandos não funcionarem, você precisará procurar os arquivos relevantes ( my.cnf , mysqld.cnf ou my.ini ) manualmente para localizar o caminho do arquivo relevante.

Definindo um intervalo de IP de endereço de vinculação seguro(Setting a Safe Bind-Address IP Range)

  1. Depois de abrir o arquivo de configuração do MySQL para seu servidor, use a tecla de seta do teclado para acessar a seção de endereço de ligação(bind-address) do arquivo. Esse intervalo de IP limita as conexões com seu banco de dados, que normalmente é configurado para permitir apenas conexões da máquina ou servidor local usando 127.0.0.1 .

  1. Se você deseja configurar seu banco de dados MySQL para permitir conexões de dispositivos usando sua conexão de internet atual, encontre seu endereço IP público(find your public IP address) primeiro e substitua 127.0.0.1 por esse endereço IP. Como alternativa, substitua-o por um endereço IP do dispositivo ou servidor do qual você deseja permitir conexões.

  1. Em algumas circunstâncias, você pode querer permitir todas(all) as conexões remotas com um banco de dados MySQL . Isso traz um risco extremo(extreme risk) e não deve ser usado em um servidor de produção. Se você quiser permitir isso, no entanto, substitua 127.0.0.1 por 0.0.0.0 .

  1. Anote o valor da porta na seção (port )Configurações básicas(Basic Settings) . Isso será necessário na próxima seção. Se não estiver visível, será usado o valor padrão, que é a porta 3306 . Você pode adicionar sua própria porta digitando port = xxxx em uma nova linha, substituindo xxxx por um valor de porta adequado.

  1. Depois de configurar o endereço de ligação(bind-address ) em seu arquivo de configuração do MySQL , salve o arquivo. Se você estiver no Linux , selecione Ctrl + O e Ctrl + X para fazer isso. No Mac, selecione Command + O e Command + X . Os usuários do Windows podem salvar selecionando Arquivo(File ) > Salvar(Save) .

  1. Em seguida, usuários de Linux e Mac podem reiniciar o MySQL digitando mysql.server stop && mysql.server start ou mysql.server restart . Você pode precisar elevar o comando usando sudo(using sudo) (ex. sudo mysql.server restart ) e usar o caminho apropriado para o arquivo mysql.server (ex. /usr/local/bin/mysql.server ).

  1.  Se o comando acima não funcionar, tente sudo service mysql restart .

  1. Para reiniciar o MySQL no Windows , abra uma nova janela do PowerShell clicando com o botão direito do mouse no menu (PowerShell)Iniciar(Start) e selecionando Windows PowerShell (Admin) . Na janela do PowerShell, digite net stop mysql80 seguido de net start mysql80 , substituindo mysql80 pelo nome de serviço correto em seu PC.

Se você não tiver certeza do nome correto do serviço no Windows , digite net start para encontrá-lo. Se você não puder recarregar sua configuração, reinicie seu servidor e recarregue o MySQL manualmente (se necessário).

Configurando seus firewalls(Configuring Your Firewalls)

Neste estágio, seu banco de dados MySQL deve permitir conexões remotas de dispositivos usando o endereço IP que você definiu como o valor do endereço de ligação(bind-address) em seu arquivo de configuração do MySQL (ou de todos os dispositivos se você definir esse valor como 0.0.0.0 ). No entanto, as conexões ainda serão bloqueadas pelo seu dispositivo ou firewall de rede(device or network firewall) .

A maioria dos servidores e PCs usa um firewall para bloquear conexões, a menos que o acesso a uma porta específica seja concedido. As etapas para configurar isso variam, dependendo se você estiver executando o MySQL no Windows ou no Linux . Os firewalls do Mac(Mac) são desabilitados por padrão, portanto, você não precisa concluir nenhuma etapa adicional aqui.

Configurar firewalls do Linux(Configure Linux Firewalls)

Muitos servidores Linux usam iptables como o utilitário de firewall padrão. Você pode configurá-lo seguindo as etapas abaixo.

  1. Abra um terminal ou conexão SSH e digite sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT . Substitua XXXX pelo endereço IP do dispositivo do qual você deseja permitir conexões MySQL e substitua YYYY pelo(from) valor da porta correspondente do seu arquivo de configuração MySQL (por exemplo, (MySQL)3306 ).

  1. Isso configurará o firewall temporariamente. Se você estiver usando um servidor Linux(Linux) baseado em Debian ou Ubuntu , torne essa alteração permanente digitando sudo netfilter-persistent save e sudo netfilter-persistent reload no terminal ou na janela SSH.

Se o iptables não for a ferramenta de firewall padrão para sua distribuição Linux , você precisará consultar o manual do usuário da sua distribuição para obter mais informações. Se certos pacotes (como netfilter-persistent ) não estiverem disponíveis, use a ferramenta de repositório de software de sua distribuição para instalá-los (por exemplo, sudo apt install netfilter-persistent ).

Configurar firewalls do Windows(Configure Windows Firewalls)

Se você estiver usando um PC ou servidor Windows para hospedar seu banco de dados, poderá configurar seu firewall seguindo estas etapas:

  1. Clique com o botão direito do mouse(Right-click) no menu Iniciar(Start) e selecione Executar(Run) .

  1. Na caixa Executar(Run) , digite wf.msc e selecione OK .

  1. Na janela do Windows Defender , selecione (Windows Defender)Regras de entrada(Inbound Rules ) > Nova regra(New Rule) .

  1. Na janela Assistente de Nova Regra de Entrada(New Inbound Rule Wizard) , selecione Porta(Port ) > Avançar(Next) .

  1. No próximo menu, selecione TCP nas opções, digite 3306 (ou qualquer valor de porta listado no arquivo de configuração do MySQL ) e selecione Avançar(Next) .

  1. No menu Ação(Action) , deixe a opção padrão Permitir a conexão(Allow the connection) habilitada e selecione Avançar(Next) .

  1. Confirme que você deseja que a regra seja aplicada a todos os tipos de rede e selecione Avançar(Next)

  1. Digite um nome descritivo para a regra (por exemplo, MySQL ) na porta fornecida e selecione Concluir(Finish) para adicioná-la à sua lista de regras de firewall.

Se você tiver problemas para se conectar, repita as etapas acima, certificando-se de criar uma nova regra de saída(outbound rule ) nas configurações do firewall usando os mesmos detalhes (porta 3306, etc). Você também pode precisar configurar seu roteador de rede local para abrir as portas bloqueadas necessárias(open the necessary blocked ports) para permitir conexões de entrada e saída ao seu banco de dados. 

Conectando-se a um servidor remoto usando MySQL(Connecting to a Remote Server Using MySQL)

Depois de configurar seu banco de dados MySQL para permitir conexões remotas, você precisará estabelecer uma conexão com ele. Você pode fazer isso usando o comando mysql ( mysql.exe no Windows ) de um terminal ou janela do PowerShell .

Se você estiver executando o Windows(Windows) , precisará certificar-se de que o MySQL está instalado localmente(MySQL is installed locally) antes de começar. Os usuários de Mac(Mac) podem instalar o MySQL usando o homebrew(using homebrew) a partir do terminal ( brew install mysql ), enquanto os usuários de Linux podem usar seu repositório de aplicativos local (por exemplo , sudo apt install mysql ) para instalar os pacotes necessários.

Conectando-se ao MySQL no Linux ou Mac(Connecting to MySQL on Linux or Mac)

  1. Para se conectar ao seu servidor MySQL remoto no Mac ou Linux , abra uma nova janela de terminal e digite mysql -u username -h XXXX:XXXX -p . Substitua XXXX:XXXX pelo endereço IP do servidor remoto e número da porta (por exemplo , 100.200.100.200:3306 ) e nome de usuário(username) pelo seu nome de usuário do MySQL.

  1. Quando solicitado, confirme sua senha. Se a conexão for bem-sucedida, uma mensagem de sucesso aparecerá no terminal.

Conectando-se ao MySQL no Windows(Connecting to MySQL on Windows)

  1. Para se conectar a um servidor MySQL remoto no Windows , abra uma nova janela do PowerShell clicando com o botão direito do mouse no menu (PowerShell)Iniciar(Start) e selecionando Windows PowerShell (Admin) .

  1. Na nova janela do PowerShell, digite cd “C:\Program Files\MySQL\MySQL Workbench 8.0\ ” para entrar na pasta correta, substituindo este diretório pelo diretório de instalação correto em seu PC. Por exemplo, se sua versão do MySQL for 8.0.1, use a pasta MySQL Workbench 8.0.1 .

  1. A partir daí, digite .\mysql.exe -u username -h X.X.X.X:XXXX -p . Substitua XXXX:XXXX pelo endereço IP e número da porta do servidor remoto (por exemplo , 100.200.100.200:3306 ) e nome de usuário(username) por um nome de usuário do MySQL que permita acesso remoto (como root ). Siga(Follow) quaisquer instruções adicionais na tela.
  2. Forneça sua senha, quando solicitado, para concluir o processo de login e acessar seu banco de dados MySQL remotamente.

Se isso não funcionar, conecte-se ao servidor ou PC que hospeda seu servidor MySQL usando SSH (ou acesse-o diretamente) seguindo estas etapas e usando o argumento -h localhost . Você pode então criar uma conta de usuário adequada seguindo as etapas abaixo.

Permitindo acesso de usuário remoto a um banco de dados MySQL(Allowing Remote User Access to a MySQL Database)

A essa altura, você deve ser capaz de se conectar ao seu servidor MySQL remotamente usando a conta de usuário root do seu servidor ou outra conta de usuário com privilégios elevados. Como esse nível de acesso não é seguro, você pode preferir criar uma conta mais restrita para acessar seu banco de dados MySQL .

Esta conta terá acesso limitado ao seu servidor MySQL , permitindo que ele interaja apenas com bancos de dados selecionados. Ele não poderá fazer alterações mais sérias, como acessar outros dados do banco de dados, criar novas contas de usuário etc. 

Você precisará ter a capacidade de entrar em seu servidor MySQL remotamente. Se você não puder usar sua conta root remotamente, precisará acessar o shell do seu servidor usando o comando mysql por meio de uma conexão (mysql)SSH remota ou acessando diretamente o PC ou servidor que hospeda o servidor.

  1. Em seu shell MySQL remoto (usando a ferramenta mysql ), digite CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; e selecione Entrar(Enter) . Substitua o nome de usuário(username ) pelo nome de usuário que você deseja criar, xxxx pelo endereço IP do qual deseja se conectar e a senha(password) por uma senha adequada.

  1. Você precisará conceder à sua nova conta as permissões necessárias. Para fazer isso, digite GRANT ALL ON databasename.* TO username@”x.x.x.x”; e substitua databasename, username e xxxx  pelos detalhes corretos. Se desejar, substitua databasename por * para conceder acesso a todos os bancos de dados. 

Com o acesso concedido, use as etapas na seção acima para se conectar ao seu servidor remotamente usando sua nova conta (por exemplo, mysql -u username -h XXXX:XXXX -p ).

Protegendo seus dados de banco de dados(Securing Your Database Data)

Esteja você trabalhando com MySQL ou outro tipo de banco de dados SQL , é importante manter suas conexões seguras para manter a segurança de seus dados. Uma boa maneira de fazer isso é gerar chaves SSH para acesso remoto(generate SSH keys for remote access) ao seu servidor, em vez de depender de senhas desatualizadas (e fáceis de adivinhar).

Se estiver preocupado com a perda de dados, você pode facilmente fazer backup de seu banco(back up your database) de dados online. A maioria dos bancos de dados é executada usando servidores Linux — você pode (Linux)automatizar facilmente um backup de arquivo Linux(automate a Linux file backup easily) . Se você estiver executando o MySQL no Windows , poderá configurar um sistema de backup automático semelhante para Windows(automatic backup system for Windows) , permitindo restaurar seus dados em caso de emergência.



About the author

Eu sou um programador de computador, e tenho sido há mais de 15 anos. Minhas habilidades estão no desenvolvimento e manutenção de aplicativos de software, além de fornecer suporte técnico para esses aplicativos. Também ensinei programação de computadores para alunos do ensino médio e atualmente sou instrutor profissional.



Related posts