实际上,这三个用户帐户实际上非常危险。它们对测试数据库构成了极大的威胁。
不幸的是,mysql具有对测试数据库的完全访问权限。您如何找到它们?
运行此查询:
SELECT user,host,db from mysql.db;
安装mysql后,您会看到两行,可以完全访问任何名为“ test”或前5个字符为“ test_”的数据库。
为什么这是个问题 ???
尝试运行以下命令:
$ mysql -u'' -Dtest
您将在没有密码的情况下连接测试数据库。
现在,创建一个表并将其装入一行:
CREATE TABLE mytable (a int);
INSERT INTO mytable VALUES (1);
好,大不了 你能把这张桌子的大小翻倍30倍吗?
INSERT INTO mytable SELECT * FROM mytable;
INSERT INTO mytable SELECT * FROM mytable;
... (30 times)
INSERT INTO mytable SELECT * FROM mytable;
你得到了什么 ??具有1,073,741,824行的表。轻松达到4GB以上。
想象一下创建任何大小的表。如何在测试数据库中创建一堆表并随意访问它们呢?
在这种情况下,您可以做的最好的事情是运行以下查询:
DELETE FROM mysql.db;
并重启mysql。然后,这三个帐户将被适当地停用。
试试看 !!!
更新2011-09-12 10:00 EDT
此删除:
DELETE FROM mysql.db;
FLUSH PRIVILEGES;
正是您最初安装所需要的。但是,如果已经建立了用户,则可以运行以下命令:
DELETE FROM mysql.db WHERE db IN ('test','test_%');
FLUSH PRIVILEGES;
这将删除特定的两个数据库权限。
正如我在回答中提到的那样,这三个权限对于测试数据库非常危险。运行此DELETE将中和那些具有测试数据库完整权限的帐户。