ERRO 1698 (28000): Acesso negado para o usuário 'root' @ 'localhost' no Ubuntu 18.04

22

Eu segui este tutorial para instalar o MySQL, mas depois de instalar o MySQL com sucesso, não consegui acessar o banco de dados.

ERRO 1698 (28000): acesso negado para o usuário 'root' @ 'localhost'

Ashrafuzzaman Sujan
fonte
11
Eu enfrentei o mesmo problema, depois de algumas escavações, entendi que você tem que definir a senha de root como você mesmo seguindo as instruções no StackOverFlow .
Mohammad.H Fathi

Respostas:

46

Encontrei uma solução no link aqui . Ao seguir essa solução, resolvi meu problema.

Etapas curtas são:

sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test'; 

Nota: aqui testestá uma nova senha para o usuário root. Além disso, lembre-se de executar o comando sudo service mysql restartapós alterar o usuário.

Ashrafuzzaman Sujan
fonte
Obrigado. É estranho que o mysql-server não tenha mais como digitar a senha.
gamofe
11
ERRO 1064 (42000): você tem um erro na sua sintaxe SQL; verifique o manual que corresponde à versão do servidor MariaDB para a sintaxe correta a ser usada perto de 'USER' root '@' localhost 'IDENTIFICADO COM mysql_native_password BY' b230mehonot '' na linha 1
alhelal
mesmo erro aqui ... :(
user1111929 8/08/18
@alhelal, A solução é para o MySQL, não para o MariaDB. Então você pode tentar outra solução.
Ashrafuzzaman Sujan
Não escreva mysql -u root, Apenas escreva "sudo mysql". Nos sistemas Ubuntu executando o MySQL 5.7 (e posterior), o usuário root é autenticado pelo plugin auth_socket por padrão.
ravisoni 12/01
13

Encontrei outra maneira que é muito melhor, pois não precisamos fornecer nenhuma senha para o sistema local.
É como se segue.

Terminal aberto e tipo

sudo mysql -u root -p

Ele será solicitado no mysql, aqui você pode disparar qualquer comando mysql.

Use a tabela mysql para alterar o tipo de tabela, para que possamos usar a senha vazia. Abaixo está o comando

USE mysql;

Agora alteramos o tipo de tabela seguindo o comando

UPDATE user SET plugin='mysql_native_password' WHERE User='root';

agora temos que liberar os privilégios, porque usamos UPDATE. Se você usar INSERT, UPDATE ou DELETE em tabelas de concessão diretamente, precisará usar FLUSH PRIVILEGES para recarregar as tabelas de concessão.

FLUSH PRIVILEGES;

agora saia do mysql seguindo o comando

exit;

agora reinicie o servidor mysql seguindo o comando

service mysql restart

Espero que isso possa ajudar

Obrigado.

Krunal Pathak
fonte
2
Esta é a resposta certa
Ningappa
Obrigado Feliz em ajudar :)
Krunal Pathak