Supprimer les comptes utilisateurs anonymes
Par défaut, certaines installations de MySQL créent des comptes utilisateurs anonymes, qui ont un nom d'utilisateur vide. Ces comptes représentent un risque de sécurité car ils peuvent permettre un accès non autorisé. Il est essentiel, pour la sécurité, de les vérifier et de les supprimer s'ils existent.
Vous pouvez identifier les utilisateurs anonymes en interrogeant la table mysql.user pour les entrées avec un nom d'utilisateur vide.
SELECT User, Host FROM mysql.user WHERE User = '';
Si des utilisateurs anonymes existent, cette requête les listera. Une nouvelle installation sur Ubuntu peut en inclure un, mais les versions plus récentes de MySQL/MariaDB n'ont souvent pas d'utilisateurs anonymes par défaut.
Si vous voyez des résultats comme :
+------+-----------+
| User | Host |
+------+-----------+
| | localhost |
+------+-----------+
1 row in set (0.00 sec)
Alors vous devriez supprimer l'utilisateur anonyme avec l'instruction DROP USER, en spécifiant à la fois le nom d'utilisateur (qui est une chaîne vide '') et l'hôte :
DROP USER ''@'localhost';
Vous devriez voir cette confirmation :
Query OK, 0 rows affected (0.01 sec)
Cependant, si votre requête renvoie un ensemble vide comme :
Empty set (0.00 sec)
Cela signifie qu'il n'y a pas d'utilisateurs anonymes dans votre base de données, ce qui est déjà sécurisé. Dans ce cas, si vous essayez de supprimer un utilisateur anonyme inexistant, vous obtiendrez une erreur :
ERROR 1396 (HY000): Operation DROP USER failed for ''@'localhost'
Cette erreur est attendue si aucun utilisateur anonyme n'existe, et vous pouvez continuer en toute sécurité.
Après avoir vérifié les utilisateurs anonymes et les avoir supprimés si nécessaire, videz les privilèges pour vous assurer que les modifications sont appliquées :
FLUSH PRIVILEGES;
Vérifiez à nouveau qu'aucun utilisateur anonyme ne reste en exécutant la requête SELECT :
SELECT User, Host FROM mysql.user WHERE User = '';
Cette requête devrait renvoyer un ensemble vide, confirmant qu'aucun utilisateur anonyme n'existe :
Empty set (0.00 sec)
Vous avez vérifié et corrigé avec succès une vulnérabilité de sécurité potentielle de votre serveur. Vous pouvez maintenant quitter le shell MySQL.
exit;