Páginas

quarta-feira, 10 de outubro de 2012

Como acessar o MySQL remotamente a partir de outras máquinas

Hoje no trabalho, nos deparamos com um problema ao tentar acessar o mysql através de aplicações (PHP) que estavam rodando em outras máquinas.

Tava dando erro exatamente na linha do mysql_connect(), cujo parâmetro do servidor era o IP da máquina onde estava instalado o banco de dados, obviamente.

Então, resolvi fazer esse post para registrar o passo-a-passo de como conseguimos resolver esse impasse.
Antes de começar, vale ressaltar que praticamente nada foi feito nas máquinas onde estavam o código da aplicação. Tudo foi feito na máquina onde estava rodando o mysql, que por sinal era Linux.

Vamos lá, primeiro comentamos a linha bind-address = 127.0.0.1 do arquivo my.cnf. No nosso caso, o endereço deste aqrquivo era "/etc/mysql/my.cnf". Essa linha possibilitava apenas acesso local, impedindo os acessos remotos (vindos de fora).

* Para comentar, basta colocar um '#' antes: # bind-address = 127.0.0.1

Feito isso, criamos um usuário específico para acessar a base de dados em questão, com todos os privilégios necessários, inclusive o de poder acessar remotamente de outras máquinas. No exemplo abaixo, chamaremos o nome desse usuário de "usuario_responsavel".

Comandos utilizados no terminal:

# mysql -D nome_do_banco -u root

ou se estiver utilizando senha:

# mysql -D nome_do_banco -u root -p

mysql> grant all privileges on nome_do_banco.* to 'usuario_responsavel'@'%' identified by 'senha_do_usuario_responsavel' WITH GRANT OPTION;

Este comando pode ser modificado de acordo com a sua necessidade. Por exemplo, se quiser que o usuário tenha acesso somente a tabela "teste", deve-se colocar "...privileges on nome_do_banco.teste...". Ou se quiser que apenas uma máquina tenha acesso a base, basta substituir to 'usuario_responsavel'@'%' por to 'usuario_responsavel'@'ip_da_maquina_que_vai_acessar'.

E é isso.



Nenhum comentário:

Postar um comentário