Deixe as 2 linhas a seguir falharem se o usuário existir e
blahblah
não importa por enquanto:create user 'root'@'localhost' identified by 'blahblah';
create user 'root'@'127.0.0.1' identified by 'blahblah';
Faça suas doações:
grant all on *.* to 'root'@'localhost';
grant all on *.* to 'root'@'127.0.0.1';
Altere a senha para algo que você vai se lembrar:
set password for 'root'@'localhost' = password('NewPassword');
set password for 'root'@'127.0.0.1' = password('NewPassword');
Veja quantos usuários root você tem. Um usuário real é uma combinação de usuário/host. A senha aparecerá com hash:
select user,host,password from mysql.user where user='root';
ou
select user,host,authentication_string from mysql.user where user='root';
O segundo acima é para o MySQL 5.7
Se você obtiver mais do que os dois usuários acima, elimine os outros, como:
drop user 'root'@'%'; -- this is the wildcard hostname, can be a security risk
drop user 'root'@'::1';
Ainda tem apenas 2? Espero que sim. Use as instruções de seleção acima para verificar.
Não conecte um aplicativo de usuário usando root. root é apenas para manutenção. Não importa se é um código do lado do servidor ou se um administrador o está executando. O código que não é protegido e/ou injetado com instruções prejudiciais é executado como root. Então, é por isso.