Como resolver o erro: “Acesso negado para usuário ‘root’@’localhost’ ” no Ubuntu?
Mekie,tudo nas calmas? Por acaso voçê quando tenta acessar o mysql pelo terminal com o comando
mysql -u root -p.
Voçê depara-se com o erro Acesso negado para usuário ‘root’@’localhost’.
Se sim então este post é feito em especial para ti.
Neste post vamos dar uma possivel solução deste problema. Sem mais delongas vamos ao codigo.
Resolvendo o problema
Em alguns sistemas, como o Ubuntu , o MySQL está usando o plugin Unix auth_socket por padrão.
Basicamente significa que: o seu usuario será “autenticado” pelas credenciais do usuário do sistema. Você pode ver se o teu usuário root
está configurado assim fazendo os seguintes comandos:
sudo mysql -u root
mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------------------+
| User | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.sys | caching_sha2_password |
| debian-sys-maint | caching_sha2_password |
+------------------+-----------------------+
No primeiro comando nos entramos na consola do mysql, talvez tenha notado a falta da flag -p, neste caso não é necessario usar a flag -p quando usar o comando sudo.No segundo comando dizemos que vamos usar a DB interna chamada mysql. E no terceiro comando fizemos um select sobre as informações dos usuarios do mysql.
NOTA: Não esqueça os ponto e virgula ‘;’ no final de um comando
No nosso caso, e espero que no seu, o root
usuário está a usar o pluginauth_socket.
Podemos resolver de duas maneiras.
- Você pode criar um novo
db_user
com vocêsystem_user
(recomendado). - Você pode definir o usuário root para usar o
mysql_native_password
plugin
Neste post vou falar da primeira maneira, a opção 2 funciona mas eu acho que é sempre uma boa prática criar um novo usuário e usar deixar o root para estar lá. Por isso vamos nos focar na opção 1.
Execute os comandos:
NOTA: (substitua SYSTEM_USER pelo nome de usuário que você possui)
mysql> CREATE USER 'SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'SYSTEM_USER'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit;
sudo service mysql restart
O ultimo comando é importante para restartar o sistema. Lembre -se: seguindo este metodo você terá que se conectar ao MySQL com o seu nome de usuário do sistema ( mysql -u SYSTEM_USER
).
Agora se quiser pode fazer um SELECT nos usuarios do sistema com o comando : mysql> SELECT User, Host, plugin FROM mysql.user;
Depois disso, seja feliz da vida…..
Conclusão
Neste post vimos uma solução de como resolver o ERRO 1698 (28000): Acesso negado para usuário ‘root’@’localhost’.
Se este passo não funcionou para si, pesquise pelo 2 passo, ou tente outros meios.
Obrigado pela atenção, e Estamos Juntosssssssssssssssssssssssssssssssss!