Acessando remotamente o MySQL

 mysql

A primeira coisa é, não utilize um usuário root para acesso a sua base, crie usuários distintos para cada aplicação. Uma vez que o root pode alterar até tabelas do MySQL. Fica a dica!

Atenção Os links para a documentação do MySQL contidos neste guia são da versão 5.1

Conecte-se no MySQL pelo terminal, após apertar enter digite sua senha:

$ mysql -u <usuario> -p

Iremos criar o usuário:

CREATE USER '<usuario>'@'<host>' IDENTIFIED BY '<senha>';

Onde:

  • < host >: host name ou ip
  • < usuario >: Usuário que irá se conectar
  • < senha >: senha para o novo usuário

Entenda como um ip (IPv4) ou um hostname (localhost ou db.exemplo.com)

Atribua acesso, iremos limitar o acesso ao CRUD, uma vez que ele pode ter mais operações. Caso queira ver todas clique aqui.

GRANT <privilegios> ON <banco>.<tabela> TO '<usuario>'@'<host>';
  • ALLPRIVILEGES
  • SELECT
  • UPDATE
  • INSERT
  • DELETE

O destaque vai para ALLPRIVILEGES que habilita todos os privilégios possiveis deixando com permissões semelhantes a root, então cuidado.

Quando desejar acesso externo para número ilimitado de máquinas, ou seja, qualquer uma, utilize o nome do host como %

Um exemplo de uso:

GRANT SELECT, UPDATE, INSERT, DELETE ON teste.* TO 'flaverton'@'flaverton.com';

Garantindo acesso de select, update, insert e delete a todas as tabelas do banco chamado teste, para o usuário flaverton, que deverá se conectar a partir do host flaverton.com.

Feito isso devemos resetar o cache de permissões dentro do MySQL usando o comando:

flush privileges;

Nessa parte iremos alterar o arquivo de configuração do MySQL (/etc/mysql/my.cnf) para liberar a conexão externa.

Caso não encontre o arquivo na pasta mencionada, utilize o comando locate para fazer a busca. Neste artigo ensino como usar com Debian e Red Hat, neste outro com macOS.

$ sudo nano /etc/mysql/my.cnf

Procure por uma sessão chamada [mysqld] e a linha onde existe bind-address

O bind-address suporta somente um endereço, então se precisa de uma restrição mais complexa é altamente indicado usar um firewall, e uma configuração usável é a desse tutorial sobre binding em multiplos endereços.

Altere o valor dessa linha para:

bind-address = 0.0.0.0

Só pra constar coloquei com * (asterísco) e funcionou, mas a opção acima é a recomendada, inclusive na documentação.

Leitura Complementar

Como leitura complementar indico o blog do Aprendendo TI no dia-a-dia, mais especifíco o postAtribuindo permissões para usuário MySQl.

Referências


comments powered by Disqus