Ativar acesso remoto (Grant) Início / Tutoriais / Mysql / Ativar acesso remoto (Grant) Se você tentar se conectar ao servidor mysql a partir de uma máquina remota, e encontrar um erro como o descrito abaixo, este artigo é para você.
ERRO 1130 (HY000): O host '1.2.3.4' não tem permissão para se conectar a este servidor MySQL
Alterar configuração do mysql
Comece com a edição do arquivo de configuração do mysql
vim /etc/mysql/my.cnf
Comente as seguintes linhas.
#bind-address = 127.0.0.1
#skip-networking
Se você não encontrar a linha de ignorar rede, adicione-a e comente-a.
Reinicie o servidor mysql.
~ /etc/init.d/mysql restart
Alterar privilégio GRANT
Você pode se surpreender ao ver, mesmo após as alterações acima, que você não está obtendo acesso remoto ou acesso, mas não é capaz de todos os bancos de dados.
Por padrão, o nome de usuário e a senha do mysql que você está usando têm permissão para acessar o servidor mysql localmente. Então, precisa atualizar privilégios.
Execute um comando como abaixo para acessar de todas as máquinas. (Substitua USERNAME
e PASSWORD
por suas credenciais.)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Execute um comando como abaixo para dar acesso a um IP específico. (Substitua USERNAME
e PASSWORD
por suas credenciais.)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Você pode substituir o 1.2.3.4 pelo seu IP. Você pode executar o comando acima várias vezes para conceder acesso a partir de vários IPs.
Você também pode especificar um USERNAME
&PASSWORD
para acesso remoto.
Você pode verificar o resultado final:
SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";
Por fim, também pode ser necessário executar:
mysql> FLUSH PRIVILEGES;
Conexão de teste
Do terminal / linha de comando:
mysql -h HOST -u USERNAME -pPASSWORD
Se você obtiver um shell mysql, não se esqueça de executar os bancos de dados show; para verificar se você possui privilégios corretos em máquinas remotas.
Dica de bônus: revogar acesso
Se você acidentalmente conceder acesso a um usuário, é melhor ter a opção de revogação à mão.
A seguir, revogará todas as opções para USERNAME de todas as máquinas:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';
Following will revoke all options for USERNAME from particular IP:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
Its better to check information_schema.user_privileges table after running REVOKE command.
Se você vir o privilégio USAGE após executar o comando REVOKE, tudo bem. É tão bom quanto nenhum privilégio. Não tenho certeza se pode ser revogado.