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

Comment désactiver les connexions root MySQL lorsqu'aucun mot de passe n'est fourni ?

Les utilisateurs rencontrant ce comportement dans les nouvelles versions de MySQL/MariaDB (par exemple Debian Stretch, etc.) doivent savoir que dans la table mysql.user, il y a une colonne appelée 'plugin'. Si le plugin 'unix_socket' est activé, alors root pourra se connecter via la ligne de commande sans avoir besoin d'un mot de passe. Les autres mécanismes de connexion seront désactivés.

Pour vérifier si c'est le cas :

SELECT host, user, password, plugin FROM mysql.user;

qui devrait retourner quelque chose comme ceci (avec unix_socket activé) :

+-----------+------+--------------------------+-------------+
| host      | user | password                 | plugin      |
+-----------+------+--------------------------+-------------+
| localhost | root | <redacted_password_hash> | unix_socket |
+-----------+------+--------------------------+-------------+

Pour désactiver cela et demander à root d'utiliser un mot de passe :

UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;

Remarque : Comme indiqué par @marioivangf (dans un commentaire) dans les nouvelles versions de MySQL (par exemple, 5.7.x), vous devrez peut-être définir le plug-in sur "mysql_native_password" (plutôt que vide).

Puis redémarrez :

service mysql restart

Problème résolu ! :

[email protected] ~# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Source :https://stackoverflow.com/a/44301734/3363571 Un grand merci à @SakuraKinomoto (veuillez voter pour sa réponse si vous trouvez cela utile).