2011-01-27 4 views
7

Ho appena installato il server MySQL Community (5.5.8) su Mac OS X 10.6.6.MySQL appare a DROP USER; ma l'utente esiste ancora nella tabella mysql.users

ho seguito le regole per un Installare sicuro (assegnare una password per sradicare, eliminare gli account anonimi, ecc), tuttavia, v'è un account utente che non può scendere:

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> 

Come puoi vedere che MySQL non segnala errori durante l'esecuzione del comando DROP USER, ma in realtà non elimina l'utente!

Ho provato anche a eliminare l'utente da phpMyAdmin (3.3.9) e quello ha prodotto gli stessi risultati (cioè successo segnalato, nessun messaggio di errore, utente non cancellato).

ho studiato questo e alcune persone suggeriscono che GRANT potrebbe bloccare il comando DROP USER, tuttavia, l'utente non ha privilegi 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' 

ho provato cadere di nuovo l'utente dopo che ma didn 't drop/cancella anche l'utente.

Ho controllato i miei registri degli errori MySQl e non c'è niente di strano lì dentro.

Il manuale MySQL suggerisce che è possibile eliminare tutti gli account anonimi, quindi perché non posso eliminare questo?

risposta

2

È ancora possibile eliminare i record dalla tabella utente:

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

Questo metodo è stato utilizzato prima di MySQL 4.1 ...

6

Oppure, per eliminare solo quello anonimo e non anche la radice:

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

Ha funzionato per me in 5.1.57.

0

MySQL include un account utente anonimo che permette a chiunque di connettersi al server MySQL, senza dover un account utente. Questo è inteso solo per il test e deve essere rimosso prima che il server del database venga inserito in un ambiente di produzione.

Eseguire il seguente script SQL sul server MySQL per rimuovere l'account utente anonimo:

DELETE FROM mysql.user WHERE User=''; 

Dopo aver apportato le modifiche agli account permessi/utente, assicuratevi di lavare le tabelle provilege utilizzando il seguente comando:

FLUSH PRIVILEGES;