W rzeczywistości te trzy konta użytkowników są w rzeczywistości dość niebezpieczne. Stanowią bardzo duże zagrożenie dla testowania baz danych.
Niestety mysql ma pełny dostęp do testowych baz danych. Jak je znaleźć?
Uruchom to zapytanie:
SELECT user,host,db from mysql.db;
Po instalacji mysql zobaczysz dwa wiersze, które dają pełny dostęp do dowolnej bazy danych o nazwie „test” lub której pierwszych 5 znaków to „test_”.
Dlaczego to jest problem?
Spróbuj uruchomić to polecenie:
$ mysql -u'' -Dtest
Połączysz testową bazę danych bez hasła.
Teraz utwórz tabelę i załaduj ją wierszem:
CREATE TABLE mytable (a int);
INSERT INTO mytable VALUES (1);
OK, wielka sprawa. Czy mógłbyś podwoić ten stół 30 razy ???
INSERT INTO mytable SELECT * FROM mytable;
INSERT INTO mytable SELECT * FROM mytable;
... (30 times)
INSERT INTO mytable SELECT * FROM mytable;
Co dostajesz ?? Tabela z 1 073,741,824 wierszami. Z łatwością 4 GB +.
Wyobraź sobie tworzenie dowolnej tabeli o dowolnym rozmiarze. Co powiesz na utworzenie kilku tabel w testowej bazie danych i swobodny dostęp do nich do woli?
Najlepszą rzeczą, jaką możesz zrobić w tych okolicznościach, jest uruchomienie tego zapytania:
DELETE FROM mysql.db;
i zrestartuj mysql. Następnie te trzy konta zostaną prawidłowo wyłączone.
Spróbuj !!!
AKTUALIZACJA 2011-09-12 10:00 EDT
To usunięcie:
DELETE FROM mysql.db;
FLUSH PRIVILEGES;
jest właśnie tym, czego potrzebujesz do pierwszej instalacji. Jeśli jednak masz już użytkowników, możesz uruchomić to:
DELETE FROM mysql.db WHERE db IN ('test','test_%');
FLUSH PRIVILEGES;
Spowoduje to usunięcie określonych dwóch uprawnień DB.
Jak wspomniałem w mojej odpowiedzi, trzy uprawnienia są bardzo niebezpieczne dla testowych baz danych. Uruchomienie tego polecenia DELETE zneutralizuje te konta, aby mieć pełne prawa do testowania baz danych.