在本地测试 wamp 设置上使用 phpmyadmin,以及几乎标题状态,有 3 个用户标记为 user = ANY,password = NO,例如:
USER | HOST | Password | Global Priv | Grant
-----+---------+----------+-------------+------
Any | % | No | USAGE | No
Any | Local | No | USAGE | No
Any | Domain | No | USAGE | No
-----+---------+----------+-------------+------
3 个任何用户都没有任何表的任何特定权限,因此看起来他们无能为力。这是某种通用的安全措施,明确声明不属于任何其他用户组的“任何”用户没有特权?
实际上,这三个用户帐户实际上是非常危险的。它们对测试数据库构成非常大的威胁。
不幸的是,mysql 带有对测试数据库的完全访问权限。你怎么能找到他们?
运行此查询:
安装 mysql 后,您将看到两行提供对任何名为“test”或其前 5 个字符为“test_”的数据库的完全访问权限。
为什么这是个问题 ???
尝试运行以下命令:
您将在没有密码的情况下连接测试数据库。
现在,创建一个表并用一行加载它:
好的,大事。你能把这张桌子扩大 30 倍吗???
你得到了什么 ??包含 1,073,741,824 行的表。轻松,4GB+。
想象一下创建任何大小的任何表格。在测试数据库中创建一堆表并随意访问它们怎么样?
在这些情况下,您可以做的最好的事情是运行此查询:
并重新启动mysql。然后,这三个帐户将适当地失效。
试试看 !!!
更新 2011-09-12 10:00 EDT
本次删除:
正是您初次安装所需要的。但是,如果您已经建立了用户,您可以运行它:
这将删除特定的两个数据库权限。
正如我在回答中提到的,这三个权限对于测试数据库来说是非常危险的。运行此 DELETE 将取消那些拥有测试数据库的完全权限的帐户。
已经很好地解释了保留这些匿名帐户帐户的危险。
该手册提供了一个全面的检查列表,列出了为了“保护初始 MySQL 帐户”而采取的步骤。
特别是,“分配匿名帐户密码”部分建议删除这些帐户。
此外,“保护测试数据库”一章建议:
特别是在非 Windows 系统上,建议运行该
mysql_secure_installation
脚本。我相信 Windows 安装程序提供了几个安装配置文件。其中一些会自动禁用不安全的设置。如果没有,则需要手动运行检查列表。必须小心使用第三方安装程序,例如 WAMP。官方 MySQL 手册中指示的默认权限可能并不总是适用于这些自定义(如“手册范围之外)安装。当然,对于生产服务器,应不惜一切代价避免 WAMP 安装等.