我在mysql
使用中创建了一个phpmyadmin
仅具有SELECT
权限的新用户。但是,该用户可以DROP tables
删除记录、更改数据(INSERT
、UPDATE
)。我已清除权限、登录和退出等,但没有任何变化。
有任何想法吗?
非常感谢。
答案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。