MySQL 出现 DROP USER;但用户仍然存在于 mysql.users 表中

标签 mysql database macos osx-snow-leopard mysql5

我刚刚在 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手册上说可以删除所有匿名账户,为什么我不能删除这个呢?

最佳答案

或者,只删除匿名的而不是根:

mysql> 从 mysql.user 中删除 User='' AND Host='my-computer-hostname.local';

在 5.1.57 上为我工作。

关于MySQL 出现 DROP USER;但用户仍然存在于 mysql.users 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4817226/

相关文章:

python - "Access denied for user ' … '"当我没有为数据库提供用户名时

mysql - 通过 Play 使用 ScalaAnorm 访问多个数据库

mysql - 如何为数据库生成 ERD 或 UML?

mysql - Play framework 2.0.1 不断尝试进化错误的数据库类型

sql - 截断并插入 ClickHouse 数据库

mysql - 为什么我不能删除 MySQL 数据库?

mysql - 我怎样才能让 mysql_result() 工作

database - go 中 REST API 的策略

ruby-on-rails - "gem install rails"在 mac OS X 上使用 rbenv 给出 FilePermissionError

ios - 为什么我的 ios/osx 框架忽略 GCC_PREFIX_HEADER?