Mysql
 sql >> Base de données >  >> RDS >> Mysql

accès refusé pour l'utilisateur root @ localhost

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.