Próbuję usunąć anonimowych użytkowników z mojej bazy danych mysql.users. Jednak mam dziwne zachowanie. Kiedy wprowadzę polecenie:
DROP User ''@'WOPR';
Otrzymywałem ogólny komunikat o błędzie. Ponownie uruchomiłem komputer i spróbowałem ponownie. Tym razem dostałem odpowiedź
Query OK, 0 rows affected.
Ale kiedy włożyłem
SELECT User, Host, Password FROM mysql.user WHERE User='';
Zwrot wynosi:
+------+------+----------+
| User | Host | Password |
+------+------+----------+
| | WOPR | |
+------+------+----------+
(WOPR to moja nazwa hosta)
Wykonuję polecenie
DROP User ''@'WOPR';
i uzyskaj ten sam wynik.
Korzystam z nowej instalacji MySQL 5.5 na Arch Linux, jądro wersja 2.6.33.
Czy ktoś wie, co może powodować takie zachowanie?
Odpowiedzi:
To powinno zrobić dla ciebie.
Spróbuj !!!
CAVEAT
MySQL ma pewnych użytkowników wstępnie zainstalowanych w mysql.user. Ponadto mysql.db ma dwóch użytkowników, którzy mają anonimowy dostęp i pełne uprawnienia do testowania baz danych.
Po prostu to zrób
a zobaczysz, że każdy, kto łączy się z testem lub dowolną bazą danych zaczynającą się od test_, może właściwie zrobić wszystko w testowej bazie danych. Jest to złe, ponieważ osoba z pełnym dostępem do dowolnej testowej bazy danych może zjeść dysk w ciągu kilku minut.
Przykład:
OK, wielka sprawa. To tworzy tabelę z 4 bajtami.
Teraz próbuję uruchomić tę instrukcję SQL 30 razy:
Hej, natychmiastowy stół z 1,073,741,824 wierszami (4 GB + plik) !!! Obrazowanie z pełnymi prawami do testowej bazy danych, w której możesz siać spustoszenie na dysku.
Radzę, aby uruchomić to w celu wyczyszczenia dostępu użytkownika testowego:
Aby uzyskać dodatkowe wyjaśnienia, zobacz mój post MySQL: Dlaczego w mysql.db są wpisy „testowe”?
Twoje zdrowie !!!
źródło
drop user
składni zamiast bezpośredniej modyfikacji podstawowejmysql.user
tabeli?DROP USER
składnia nie działa, gdy pole użytkownika jest puste (pusty ciąg). Musisz to zrobić w sposób określony w odpowiedzi.mysql.user
stole?mysql.db
podczas instalacji, co pozwoli anonimowym użytkownikom na dostęp do testowej bazy danych. Co ciekawe, powiedziano mi, że instalacja serwera Percona usuwa te wiersze przed zakończeniem instalacji ( dba.stackexchange.com/questions/66584/... ). Ponieważ używasz MySQL, uruchom albo mysql_secure_installation lub usuń te dwa wiersze samodzielnie.