Android

Como permitir conexões remotas ao servidor de banco de dados mysql

MySql - Habilitar Usuário para receber conexão remota(rede)

MySql - Habilitar Usuário para receber conexão remota(rede)

Índice:

Anonim

Por padrão, o servidor MySQL escuta conexões apenas do host local, o que significa que ele pode ser acessado apenas por aplicativos em execução no mesmo host.

No entanto, em algumas situações, é necessário acessar o servidor MySQL a partir de um local remoto. Por exemplo, quando você deseja se conectar ao servidor MySQL remoto a partir do seu sistema local ou ao usar uma implantação de vários servidores em que o aplicativo está sendo executado em uma máquina diferente do servidor de banco de dados. Uma opção seria acessar o servidor MySQL através do SSH Tunnel e outra é configurar o servidor MySQL para aceitar conexões remotas.

Neste guia, seguiremos as etapas necessárias para permitir conexões remotas com um servidor MySQL. As mesmas instruções se aplicam ao MariaDB.

Configurando o MySQL Server

O primeiro passo é configurar o servidor MySQL para escutar um endereço IP específico ou todos os endereços IP na máquina.

Se o servidor e os clientes MySQL puderem se comunicar através de uma rede privada, a melhor opção é configurar o servidor MySQL para escutar apenas no IP privado. Caso contrário, se você deseja se conectar ao servidor por uma rede pública, configure o servidor MySQL para escutar em todos os endereços IP da máquina.

Para fazer isso, você precisa editar o arquivo de configuração do MySQL e adicionar ou alterar o valor da opção de bind-address . Você pode definir um único endereço IP e intervalos de IP. Se o endereço for 0.0.0.0 , o servidor MySQL aceita conexões em todas as interfaces IPv4 do host. Se você tiver o IPv6 configurado no seu sistema, em vez de 0.0.0.0 , use :: .

A localização do arquivo de configuração do MySQL difere dependendo da distribuição. No Ubuntu e Debian, o arquivo está localizado em /etc/mysql/mysql.conf.d/mysqld.cnf , enquanto nas distribuições baseadas no Red Hat, como o CentOS, o arquivo está localizado em /etc/my.cnf .

Abra o arquivo com seu editor de texto:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Procure uma linha que comece com bind-address e defina seu valor como o endereço IP no qual um servidor MySQL deve escutar.

Por padrão, o valor é definido como 127.0.0.1 (escuta apenas no host local).

Neste exemplo, definiremos o servidor MySQL para escutar em todas as interfaces IPv4 alterando o valor para 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

Se houver uma linha que contenha skip-networking , exclua-a ou comente-a adicionando # no início da linha.

No MySQL 8.0 e superior, a diretiva de bind-address pode não estar presente. Nesse caso, adicione-o sob o seção.

Uma vez feito, reinicie o serviço MySQL para que as alterações entrem em vigor. Somente usuários raiz ou com privilégios sudo podem reiniciar os serviços.

Para reiniciar o serviço MySQL no Debian ou Ubuntu, digite:

sudo systemctl restart mysql

Nas distribuições baseadas no RedHat, como o CentOS, para reiniciar o serviço, execute:

sudo systemctl restart mysqld

Concedendo acesso a um usuário de uma máquina remota

A próxima etapa é permitir o acesso ao banco de dados ao usuário remoto.

Efetue login no servidor MySQL como usuário root digitando:

sudo mysql

mysql -uroot -p

De dentro do shell do MySQL, use a instrução GRANT para conceder acesso ao usuário remoto.

GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

Onde:

  • database_name é o nome do banco de dados ao qual o usuário se conectará. user_name é o nome do usuário do MySQL. endereço_ip é o endereço IP ao qual o usuário se conectará. Use % para permitir que o usuário se conecte a partir de qualquer endereço IP. user_password é a senha do usuário.

Por exemplo, para conceder acesso a um banco de dados dbname a um usuário chamado foo com a senha my_passwd de uma máquina cliente com IP 10.8.0.5 , você deve executar:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';

Configurando o firewall

A última etapa é configurar seu firewall para permitir o tráfego na porta 3306 (porta padrão do MySQL) das máquinas remotas.

Iptables

sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT

Permitir acesso a partir de um endereço IP específico:

sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT

UFW

UFW é a ferramenta de firewall padrão no Ubuntu. Para permitir o acesso de qualquer endereço IP na Internet (muito inseguro), execute:

sudo ufw allow 3306/tcp

Permitir acesso a partir de um endereço IP específico:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

FirewallD é a ferramenta de gerenciamento de firewall padrão no CentOS. Para permitir o acesso de qualquer endereço IP na Internet (muito inseguro), digite:

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp sudo firewall-cmd --reload

Para permitir o acesso de um endereço IP específico em uma porta específica, você pode criar uma nova zona FirewallD ou usar uma regra avançada. Bem, crie uma nova zona chamada mysqlzone :

sudo firewall-cmd --new-zone=mysqlzone --permanent sudo firewall-cmd --reload sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32 sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp sudo firewall-cmd --reload

Verificando as alterações

Para verificar se o usuário remoto pode se conectar ao servidor MySQL, execute o seguinte comando:

mysql -u user_name -h mysql_server_ip -p

Onde user_name é o nome do usuário ao qual você concedeu acesso e mysql_server_ip é o endereço IP do host em que o servidor MySQL é executado.

Se tudo estiver configurado corretamente, você poderá fazer login no servidor MySQL remoto.

ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"

O erro abaixo está indicando que o usuário que você está tentando efetuar login não tem permissões para acessar o servidor MySQL remoto.

"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"

Conclusão

O MySQL, o servidor de banco de dados de código aberto mais popular por padrão, escuta as conexões de entrada apenas no host local.

Para permitir conexões remotas com um servidor MySQL, você precisa executar as seguintes etapas:

  1. Configure o servidor MySQL para ouvir em toda ou em uma interface específica. Conceda acesso ao usuário remoto. Abra a porta MySQL no seu firewall.
mysql mariadb