2011-01-27 9 views
7

Acabo de instalar el servidor de comunidad MySQL (5.5.8) en Mac OS X 10.6.6.Aparece MySQL para DROP USER; pero el usuario todavía existe en la tabla mysql.users

He estado siguiendo las reglas para una instalación (asignar una contraseña para erradicar, eliminar las cuentas anónimas, etc.) seguras, sin embargo, hay una cuenta de usuario que no puedo soltar:

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> 

Como ¡puedes ver que MySQL no informa errores al ejecutar el comando DROP USER, pero en realidad no elimina al usuario!

He intentado también eliminar al usuario desde dentro de phpMyAdmin (3.3.9) y eso produjo los mismos resultados (es decir, éxito informado, sin mensajes de error, usuario no eliminado).

He investigado esto y algunas personas sugieren que GRANT puede estar bloqueando el comando DROP USER, sin embargo, el usuario no tiene privilegios 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' 

he intentado dejar caer el usuario de nuevo después de eso, sino que didn 'soltar/eliminar el usuario tampoco.

He comprobado mis registros de errores MySQl y no hay nada inusual allí.

El manual de MySQL sugiere que es posible eliminar todas las cuentas anónimas, entonces ¿por qué no puedo eliminar esta?

Respuesta

2

Todavía se puede borrar los registros de la tabla de usuario:

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

Este método fue utilizado antes de MySQL 4.1 ...

6

O, para eliminar sólo el anónimo y no también la raíz:

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

Funcionó para mí en 5.1.57.

0

MySQL incluye una cuenta de usuario anónimo que permite que cualquiera pueda conectarse al servidor MySQL sin tener una cuenta de usuario. Esto es solo para probar y debe eliminarse antes de que el servidor de base de datos se ponga en un entorno de producción.

Ejecutar la siguiente secuencia de comandos SQL en el servidor MySQL para eliminar la cuenta de usuario anónimo:

DELETE FROM mysql.user WHERE User=''; 

Después de realizar cambios en las cuentas de permisos/de usuario, asegúrese de que lave las tablas provilege con el siguiente comando:

FLUSH PRIVILEGES; 
Cuestiones relacionadas