Acesso remoto ao MySQL – Access denied for user ‘root’@’localhost’

Estava testando o laravel homestead, e surgiu a necessidade de acessar o MySql a partir da minha máquina local. Quando tentei acessar utilizando o usuário e senha do banco apareceu o erro: ERRO 1045: ACCESS DENIED FOR USER: 'ROOT@LOCALHOST', mas, como vocês poderão ver, solucioná-lo é tão fácil quanto parece.

Como habilitar o acesso remoto MySQL

Acesso remoto ao MySQL do laravel homestead é desabilitado por padrão por razões de segurança. No entanto, pode haver momentos em que é necessário para habilitá-lo para fornecer acesso a partir de um local remoto ou simplesmente da sua máquina de desenvolvimento. Este artigo irá descrever o processo em detalhe, e é destinado a usuários familiarizados com SSH e MySQL.

Conecte-se ao servidor MySQL

O laravel homestead MySQL é acessado através de SSH. Uma vez que a conexão com o servidor foi realizado, um segundo comando fornece acesso ao servidor MySQL. O procedimento para estabelecer a ligação é como se segue:

Conecte-se ao servidor via SSH. Em seguida, conecte com o MySQL. Isso envolve a inserção do nome de usuário e senha dada especificamente para uso MySQL. O comando para iniciar a conexão é:

mysql -u root -p  

Digite a senha do MySQL quando solicitado. No caso do laravel homestead a senha é secret.

Habilitar acesso remoto ao MySQL de um IP externo

O comando a seguir irá permitir o acesso ao banco de dados MySQL a partir de um endereço IP remoto:

mysql> GRANT ALL PRIVILEGES ON *.* TO usuario@HOST IDENTIFIED BY 'senha';  

Substitua o usuario, o HOST e a senha nesse comando com os dados relevantes.
O HOST é um endereço de ip válido, por exemplo: 192.168.1.10
O usuário no laravel homestead é root e senha é secret

Habilitar acesso remoto ao MySQL de qualquer IP

Se um usuário está em um endereço IP dinâmico não será possível utilizar o método acima. Para fazer isso, use '%' no lugar do ip. Isso não é recomendado em ambientes de produção, porque é menos seguro, uma vez que permite que a conexão seja estabelecida de qualquer lugar.

mysql> GRANT ALL PRIVILEGES ON *.* TO usuario@'%' IDENTIFIED BY 'senha';  

Novamente, substitua o usuario e senha nesse comando com os dados relevantes.
O usuário no laravel homestead é root e senha é secret

Recarregar os Privilégios

Para que as novas permissões funcionem, após utilizar o grant para atribuir as permissões de acesso, é necessário recarregar os privilégios.

mysql> flush privileges;  

Agora você já pode conectar-se à seu mysql sem se deparar com o ERRO 1045: ACCESS DENIED FOR USER.

Até.

Publicado por

adlerdias

Oi! Sou Adler Dias, 30, programador, trabalho com desenvolvimento de sistemas há 10 anos. Apaixonado pela minha namorada Alyne. Meu principal hobby é a corrida, já corri uma são silvestre e...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax