我使用只有SELECT特权的phpmyadmin在mysql创build了一个新用户。 但是,这个用户可以DROP tables ,删除logging,更改数据( INSERT , UPDATE )。 我冲刷了特权,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。