只有SELECT权限的新用户可以使用DROP表

我使用只有SELECT特权的phpmyadminmysql创build了一个新用户。 但是,这个用户可以DROP tables ,删除logging,更改数据( INSERTUPDATE )。 我冲刷了特权,login和出去等,但没有改变。

有任何想法吗?

非常感谢。

好的,我有一些令人不安的消息。 如果您在testing数据库中编写表格,则需要进行某些更改。

在mysql的默认安装中,testing数据库被允许完全访问任何人。

要find这个, select user,host,db from mysql.db where db like 'test%';运行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> 

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

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

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

请注意MySQL 5.0authentication学习指南第498页中的第6段 ,尤其是最后一个要点:

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

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

要么你给这个用户更多的权限不仅仅是SELECT,或者你已经用--skip-grant-tables选项启动了MySQL。