J'essaye de SUPPRIMER les utilisateurs anonymes de ma base de données mysql.users. Cependant, j'ai un comportement étrange. Lorsque j'entre la commande:
DROP User ''@'WOPR';
J'obtenais un message d'erreur générique. J'ai donc redémarré ma machine et je l'ai réessayée. Cette fois, j'ai eu la réponse
Query OK, 0 rows affected.
Mais quand je mets
SELECT User, Host, Password FROM mysql.user WHERE User='';
Le retour est:
+------+------+----------+
| User | Host | Password |
+------+------+----------+
| | WOPR | |
+------+------+----------+
(WOPR est mon nom d'hôte)
Je lance la commande
DROP User ''@'WOPR';
et obtenez le même résultat.
J'exécute une nouvelle installation de MySQL 5.5 sur Arch Linux, la version 2.6.33 du noyau.
Quelqu'un sait-il ce qui peut provoquer ce comportement?
Réponses:
Cela devrait le faire pour vous.
Essaie !!!
CAVEAT
MySQL a certains utilisateurs préinstallés dans mysql.user. De plus, mysql.db est livré avec deux utilisateurs qui ont un accès anonyme et des privilèges complets pour tester les bases de données.
Fais juste ça
et vous verrez que quiconque se connecte à test ou à toute base de données commençant par test_ peut à peu près tout faire dans la base de données de test. C'est mauvais car une personne ayant un accès complet à n'importe quelle base de données de test peut consommer un disque en quelques minutes.
Exemple:
OK, gros problème. Il fait une table avec 4 octets.
Maintenant, essayez d'exécuter cette instruction SQL 30 fois:
Hé une table instantanée avec 1 073 741 824 lignes (4 Go + fichier) !!! Imaging disposant de tous les droits sur une base de données de test où vous pouvez faire ce genre de ravage sur un disque.
Mon conseil est d'exécuter ceci pour nettoyer l'accès des utilisateurs de test:
Pour plus de précisions, voir mon article MySQL: Pourquoi y a-t-il des entrées "test" dans mysql.db?
À votre santé !!!
la source
drop user
syntaxe au lieu de modifiermysql.user
directement la table sous - jacente ?DROP USER
syntaxe ne fonctionne pas lorsque le champ utilisateur est vide (chaîne vide). Vous devez le faire comme indiqué dans la réponse.mysql.user
table?mysql.db
l'installation qui permettra aux utilisateurs anonymes d'accéder à une base de données de test. Fait intéressant, on m'a dit que l'installation de Percona Server supprime ces lignes avant la fin de son installation ( dba.stackexchange.com/questions/66584/… ). Puisque vous utilisez MySQL, exécutez mysql_secure_installation ou supprimez ces deux lignes vous-même.