Como resolver o erro: “Acesso negado para usuário ‘root’@’localhost’ ” no Ubuntu?

Tilson Mateus
3 min readApr 3, 2022

--

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.

Erro de aceso negado no Ubuntu 20.04 LTS
Imagem do erro

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 |
+------------------+-----------------------+
Imagem que mostra o ambiente real, de o codigo ser executado
Comando no terminal

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 rootusuário está a usar o pluginauth_socket.

Podemos resolver de duas maneiras.

  1. Você pode criar um novo db_usercom você system_user(recomendado).
  2. Você pode definir o usuário root para usar o mysql_native_passwordplugin

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;

Resulatdo final na minha maquina seguindo estes passos
Resultado Final

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!

--

--

Tilson Mateus

Laravel Devoloper | writer | Open souce code creator 😛