我试图从我的 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。
有谁知道什么会导致这种行为?
Rol*_*DBA 15
DELETE FROM mysql.user WHERE user='' AND host='WOPR';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
这应该为你做。
试一试 !!!
警告
MySQL 已将某些用户预安装到 mysql.user 中。此外,mysql.db 带有两个具有匿名访问权限和测试数据库完全权限的用户。
就这样做
SELECT * FROM mysql.db \G
Run Code Online (Sandbox Code Playgroud)
你会看到任何连接到 test 或任何以 test_ 开头的数据库的人都可以在 test 数据库中做几乎所有的事情。这很糟糕,因为一个可以完全访问任何测试数据库的人可能会在几分钟内吃光一个磁盘。
例子:
use test
CREATE TABLE junk (INT a) ENGINE=MyISAM;
INSERT INTO junk VALUES (1);
Run Code Online (Sandbox Code Playgroud)
好吧,大不了。它制作了一个 4 个字节的表。
现在尝试运行这个 SQL 语句 30 次:
INSERT INTO junk SELECT * FROM junk;
Run Code Online (Sandbox Code Playgroud)
嘿,一个有 1,073,741,824 行(4GB+ 文件)的即时表!!!映像拥有测试数据库的完全权限,您可以在其中对磁盘造成这种破坏。
我对您的建议是运行它以清除测试用户访问权限:
DELETE FROM mysql.db WHERE db LIKE 'tes%' AND user='';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
如需进一步说明,请参阅我的帖子MySQL:为什么 mysql.db 中有“测试”条目?
干杯!!!
| 归档时间: |
|
| 查看次数: |
15998 次 |
| 最近记录: |