2011-01-27 8 views
7

Właśnie zainstalowałem serwer społecznościowy MySQL (5.5.8) na Mac OS X 10.6.6.MySQL pojawia się w DROP USER; ale użytkownik nadal istnieje w tabeli mysql.users

Śledzę zasady bezpiecznej instalują (przypisać hasło root, usuń anonimowych kont, itp), jednak jest jedno konto użytkownika, który nie może spaść:

mysql> select host, user from mysql.user; 
+--------------------------------+------+ 
| host       | user | 
+--------------------------------+------+ 
| 127.0.0.1      | root | 
| ::1       | root | 
| My-Computer-Hostname.local  |  | 
| My-Computer-Hostname.local  | root | 
| localhost      | root | 
| localhost      | web | 
+--------------------------------+------+ 
6 rows in set (0.00 sec) 

mysql> drop user ''@'My-Computer-Hostname.local'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec) 

mysql> select host, user from mysql.user; 
+--------------------------------+------+ 
| host       | user | 
+--------------------------------+------+ 
| 127.0.0.1      | root | 
| ::1       | root | 
| My-Computer-Hostname.local  |  | 
| My-Computer-Hostname.local  | root | 
| localhost      | root | 
| localhost      | web | 
+--------------------------------+------+ 
6 rows in set (0.00 sec) 

mysql> 

jako widać, że MySQL nie zgłasza żadnych błędów podczas wykonywania polecenia DROP USER, ale tak naprawdę nie usuwa użytkownika!

Próbowałem także usunąć użytkownika z phpMyAdmin (3.3.9) i które dało takie same wyniki (tj. Raportowany sukces, brak komunikatów o błędach, użytkownik nie został usunięty).

mam zbadane to i niektórzy ludzie sugerują, że dotacja może być blokowanie komendy DROP USER, jednak użytkownik nie ma uprawnień Grant:

mysql> SHOW GRANTS FOR ''@'My-Computer-Hostname.local'; 
+-----------------------------------------------------------+ 
| Grants for @my-computer-hostname.local    | 
+-----------------------------------------------------------+ 
| GRANT USAGE ON *.* TO ''@'my-computer-hostname.local' | 
+-----------------------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> REVOKE GRANT OPTION ON *.* FROM ''@'My-Computer-Hostname.local'; 
ERROR 1141 (42000): There is no such grant defined for user '' on host 'my-computer-hostname.local' 

próbowałem upuszczenie użytkownikowi po raz kolejny, że nie zrobił, ale 't upuść/usuń użytkownika albo.

Sprawdziłem logi błędów MySQl i nie ma w tym nic niezwykłego.

Podręcznik MySQL sugeruje, że można usunąć wszystkie anonimowe konta, więc dlaczego nie mogę go usunąć?

Odpowiedz

2

Nadal można usunąć rekordy z tabeli użytkownika:

mysql> DELETE FROM user WHERE host='my-computer-hostname.local';
Query OK, 2 rows affected (0.00 sec)

Ta metoda została zastosowana przed MySQL 4.1 ...

6

Lub, aby usunąć tylko jeden anonimowy a nie root:

mysql> DELETE FROM mysql.user GDZIE User = '' AND Host = 'my-computer-hostname.local';

Pracowałem dla mnie na 5.1.57.

0

MySQL zawiera anonimowego konta użytkownika, który pozwala każdemu, aby połączyć się z serwerem MySQL, bez konieczności konto użytkownika. Jest to przeznaczone wyłącznie do testowania i powinno zostać usunięte przed umieszczeniem serwera bazy danych w środowisku produkcyjnym.

Uruchom następujący skrypt SQL wobec serwera MySQL, aby usunąć anonimowego konta użytkownika:

DELETE FROM mysql.user WHERE User=''; 

Po wprowadzeniu zmian do kont uprawnienia/użytkowników, upewnij się wylewać tabele provilege za pomocą następującego polecenia:

FLUSH PRIVILEGES; 
Powiązane problemy