仅具有 SELECT 权限的新用户可以 DROP 表

仅具有 SELECT 权限的新用户可以 DROP 表

我在mysql使用中创建了一个phpmyadmin仅具有SELECT权限的新用户。但是,该用户可以DROP tables删除记录、更改数据(INSERTUPDATE)。我已清除权限、登录和退出等,但没有任何变化。

有任何想法吗?

非常感谢。

答案1

好吧,我有个令人不安的消息要告诉你。如果你在测试数据库中编写了表格,那么你需要进行某些更改。

在 mysql 的默认安装中,任何人都可以完全访问测试数据库。

要找到答案,请运行select user,host,db from mysql.db where db like 'test%';

mysql> select user,host,db from mysql.db where db like 'test%';
+------+------+---------+
| user | host | db      |
+------+------+---------+
|      | %    | test    |
|      | %    | test\_% |
+------+------+---------+
2 rows in set (0.00 sec)

mysql>

如果您在运行此查询时看到此显示,立即删除这两行!!!(安全漏洞)。如果您不删除它们,请注意匿名用户在测试数据库上拥有无限的火力。

请运行以下命令来删除该访问权限:

DELETE FROM mysql.db WHERE db LIKE 'test%';
FLUSH PRIVILEGES;

请注意什么MySQL 5.0 认证学习指南第 498 页第 6 段在其要点中,特别是最后一条要点:

在 Unix 上,MySQL 附带一个 mysql_secure_installation 脚本,该脚本可以对您的安装执行几个有用的安全相关操作。该脚本具有以下功能:

  • 为 root 账户设置密码
  • 删除所有可以远程访问的根帐户。
  • 删除匿名用户帐户。这可以提高安全性,因为它可以防止任何人从远程主机以 root 身份连接到 MySQL 服务器。结果是,任何想要以 root 身份连接的人都必须首先能够登录服务器主机,这为抵御攻击提供了额外的屏障。
  • 删除测试数据库(如果删除匿名帐户,您可能还想删除他们有权访问的测试数据库)。

答案2

您要么赋予该用户除 SELECT 之外的更多权限,要么使用--skip-grant-tables选项启动了 MySQL。

相关内容