然后,我开始想我应该问每个人这个问题:
多年来,我一直注意到在安装 MySQL 5.0+ 时,mysql.db填充了两个条目,允许匿名用户访问测试数据库。
您可以通过运行此查询来查看它:
mysql> select * from mysql.db where SUBSTR(db,1,4) = 'test'\G
*************************** 1. row ***************************
Host: %
Db: test
User:
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: N
Execute_priv: N
*************************** 2. row ***************************
Host: %
Db: test\_%
User:
Select_priv: Y
Insert_priv: Y
Update_priv: Y …Run Code Online (Sandbox Code Playgroud) 我试图从我的 mysql.users 数据库中删除匿名用户。但是,我一直有奇怪的行为。当我输入命令时:
DROP User ''@'WOPR';
Run Code Online (Sandbox Code Playgroud)
我收到一条通用错误消息。所以,我重新启动了我的机器,并再次尝试。这次我得到了回应
Query OK, 0 rows affected.
Run Code Online (Sandbox Code Playgroud)
但是当我投入
SELECT User, Host, Password FROM mysql.user WHERE User='';
回报是:
+------+------+----------+
| User | Host | Password |
+------+------+----------+
| | WOPR | |
+------+------+----------+
Run Code Online (Sandbox Code Playgroud)
(WOPR 是我的主机名)
我运行命令
DROP User ''@'WOPR';
并得到相同的结果。
我正在 Arch Linux 内核版本 2.6.33 上运行全新安装的 MySQL 5.5。
有谁知道什么会导致这种行为?