有人能帮我授予权限吗?我需要创建一个可以删除数据库中的表但不能删除数据库的用户?
据我了解MySQL 文档你不能简单地这样做:
DROP 权限可让您删除(移除)现有数据库、表和视图。从 MySQL 5.1.10 开始,还需要 DROP 权限才能对分区表使用语句 ALTER TABLE ... DROP PARTITION。从 MySQL 5.1.16 开始,TRUNCATE TABLE 需要 DROP 权限(在此之前,TRUNCATE TABLE 需要 DELETE 权限)。
有任何想法吗?
哦,使用的数据库是 5.0.45。
答案1
我有一个同样的问题:(我认为如果用户可以删除所有表,那么空数据库就没有价值
答案2
如果用户可以删除一个表,那么他就可以删除所有表,从而有效地删除数据库。因此,没有必要为 DROP TABLE 和 DROP DATABASE 设置单独的权限。
如果您想授予用户权限以便仅删除数据库中的单个指定表,这可能很有用,但 MySQL 不支持它。
答案3
嗯,这个漏洞已经存在 6 年了,什么也没发生。
http://bugs.mysql.com/bug.php?id=18938
我们可能不得不求助于将功能添加到像 MariaDB(mysql 的一个分支)之类的东西中……
答案4
我只是添加这个,因为其他答案对我来说看起来更像是评论...简短的回答是“不”。一些替代方案是:
如果您确实需要某些用户完全控制某些表,而其他表则不控制,请考虑将表放在另一个数据库中。更多特权用户可以跨多个数据库进行查询。
允许 DELETE 和 ALTER,这样您至少可以根据需要删除和/或重新定义数据。除了删除之外,您所需的一切。
这两种方式都不是特别方便,但如果您的需求真的那么重要,您可以这样做。