Laissez les 2 lignes suivantes échouer si l'utilisateur existe et blahblah
n'a pas d'importance pour l'instant :
create user 'root'@'localhost' identified by 'blahblah';
create user 'root'@'127.0.0.1' identified by 'blahblah';
Faites vos subventions :
grant all on *.* to 'root'@'localhost';
grant all on *.* to 'root'@'127.0.0.1';
Remplacez le mot de passe par quelque chose dont vous vous souviendrez :
set password for 'root'@'localhost' = password('NewPassword');
set password for 'root'@'127.0.0.1' = password('NewPassword');
Voyez combien d'utilisateurs root vous avez. Un utilisateur réel est un combo utilisateur/hôte. Le mot de passe apparaîtra haché :
select user,host,password from mysql.user where user='root';
ou
select user,host,authentication_string from mysql.user where user='root';
Le 2ème ci-dessus est pour MySQL 5.7
Si vous obtenez plus que les deux utilisateurs ci-dessus, supprimez les autres tels que :
drop user 'root'@'%'; -- this is the wildcard hostname, can be a security risk
drop user 'root'@'::1';
Vous n'en avez toujours que 2 ? Je l'espère. Utilisez les stmts sélectionnés ci-dessus pour vérifier.
Ne connectez pas une application utilisateur à l'aide de root. root sert uniquement à la maintenance. Peu importe qu'il s'agisse de code côté serveur ou qu'un administrateur l'exécute. Le code qui n'est pas sécurisé et/ou injecté avec des instructions nuisibles s'exécute en tant que root. Alors voilà, voilà pourquoi.