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