我刚刚在 Mac OS X 10.6.6 上安装了 MySQL 社区服务器 (5.5.8)。
我一直遵循安全安装的规则(为 root 分配密码、删除匿名帐户等),但是,有一个用户帐户我无法删除:
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>
如您所见,MySQL 在执行 DROP USER 命令时没有报告错误,但实际上并没有删除用户!
我也尝试从 phpMyAdmin (3.3.9) 中删除用户并且产生了相同的结果(即报告成功,没有错误消息,用户未删除)。
我对此进行了研究,有些人认为 GRANT 可能会阻止 DROP USER 命令,但是,用户没有 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'
之后我再次尝试删除用户,但它也没有删除/删除用户。
我检查了我的 MySQl 错误日志,里面没有异常。
MySQL手册建议可以删除所有匿名帐户,那为什么我不能删除这个呢?