In Wirklichkeit sind diese drei Benutzerkonten ziemlich gefährlich. Sie stellen eine sehr große Bedrohung für Testdatenbanken dar.
Leider bietet MySQL vollen Zugriff auf Testdatenbanken. Wie können Sie sie finden?
Führen Sie diese Abfrage aus:
SELECT user,host,db from mysql.db;
Bei der Installation von MySQL werden zwei Zeilen angezeigt, die vollen Zugriff auf alle Datenbanken mit dem Namen "test" gewähren oder deren erste 5 Zeichen "test_" sind.
Warum ist das ein Problem ???
Versuchen Sie, diesen Befehl auszuführen:
$ mysql -u'' -Dtest
Sie haben die Testdatenbank ohne Passwort verbunden.
Erstellen Sie nun eine Tabelle und laden Sie sie mit einer Zeile:
CREATE TABLE mytable (a int);
INSERT INTO mytable VALUES (1);
OK, große Sache. Könnten Sie diese Tabelle in Größe 30 mal verdoppeln?
INSERT INTO mytable SELECT * FROM mytable;
INSERT INTO mytable SELECT * FROM mytable;
... (30 times)
INSERT INTO mytable SELECT * FROM mytable;
Was bekommst du ?? Eine Tabelle mit 1.073.741.824 Zeilen. Leicht 4 GB +.
Stellen Sie sich vor, Sie erstellen eine Tabelle beliebiger Größe. Wie wäre es, eine Reihe von Tabellen in der Testdatenbank zu erstellen und nach Belieben frei darauf zuzugreifen?
Das Beste, was Sie unter diesen Umständen tun können, ist, diese Abfrage auszuführen:
DELETE FROM mysql.db;
und starte mysql neu. Dann werden diese drei Konten ordnungsgemäß außer Betrieb gesetzt.
Versuche es !!!
UPDATE 2011-09-12 10:00 EDT
Dies löschen:
DELETE FROM mysql.db;
FLUSH PRIVILEGES;
ist genau das, was Sie für eine Erstinstallation benötigen. Wenn Sie jedoch bereits Benutzer eingerichtet haben, können Sie dies stattdessen ausführen:
DELETE FROM mysql.db WHERE db IN ('test','test_%');
FLUSH PRIVILEGES;
Dadurch werden die beiden spezifischen DB-Berechtigungen entfernt.
Wie ich in meiner Antwort erwähnt habe, sind die drei Berechtigungen für Testdatenbanken sehr gefährlich. Durch Ausführen dieses DELETE werden diese Konten neutralisiert, da sie über die vollen Rechte zum Testen von Datenbanken verfügen.