Liberar acesso remoto MySQL no Debian

As vezes existe a necessidade de utilizar servidores separados para o MySQL e o Apache, e é nessas situações que é necessário liberar o acesso remoto do MySQL no Debian.

Um dos problemas mais comuns que os usuários enfrentam ao tentar configurar um banco de dados MySQL remoto é que a instância do MySQL está configurada apenas para escutar conexões locais. Esta é a configuração padrão do MySQL, mas não funcionará para uma configuração de banco de dados remoto, pois o MySQL deve ser capaz de escutar um endereço IP externo onde o servidor pode ser alcançado. Para habilitar isso, abra seu mysqld.cnf:

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

Procure pela linha que contém bind-address, que originalmente estará configurado para acessar apenas conexões locais, com o valor (127.0.0.1). Altere para o IP que deseja liberar, ou se quiser liberar todos os IPs, utilize (0.0.0.0).

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 0.0.0.0
. . .

Após isso, pressione CTRL + X, Y e depois ENTER para salvar e sair.

Digite o comando abaixo para reiniciar o serviço do MySQL no Debian:

sudo systemctl restart mysql

Se você tiver uma conta de usuário MySQL existente que planeja usar para se conectar ao banco de dados de seu host remoto, precisará reconfigurar essa conta para se conectar a partir do servidor remoto em vez de localhost . Para fazer isso, abra o cliente MySQL como seu usuário raiz do MySQL ou com outra conta de usuário com privilégios:

sudo mysql

Se você ativou a autenticação de senha para root , precisará usar o seguinte comando para acessar o shell do MySQL:

mysql -u root -p

Para alterar o host de um usuário, você pode usar o RENAME USERcomando do MySQL . Execute o seguinte comando, certificando-se de mudar sammypara o nome da sua conta de usuário MySQL e remote_server_ippara o endereço IP do seu servidor remoto:

RENAME USER 'sammy'@'localhost' TO 'sammy'@'remote_server_ip';

Como alternativa, você pode criar uma nova conta de usuário que só se conectará do host remoto com o seguinte comando:

CREATE USER 'fernando'@'%' IDENTIFIED BY 'password';