概述
我最近在
MySQL 5.5.x中试过这个:
GRANT
SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON crawler.*
TO 'my_user'@'localhost' WITH GRANT OPTION;
这会导致错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘TRUNCATE ON crawler.*
TO ‘my_user’@’localhost’ WITH GRANT OPTION’ at line 2
这在我添加TRUNCATE之前曾经工作过,所以经过一些研究后我发现MySQL不支持这个.
原因是TRUNCATE被归类为DDL操作,因此它不在内部使用DELETE,它使用DROP.好吧,所以我想限制这个用户删除表(如果发生安全漏洞,至少恶意用户必须确定表的名称并单独删除它们).
但是,事实证明我需要授予此用户DROP权限,该权限允许用户也删除整个数据库.鉴于没有a grant for individual tables,还有另一种方法吗?我想我可以用另一个用户将其交给另一个进程,但对于这么小的问题感觉有点麻烦.
目前,我会坚持使用DELETE,即使它很慢! (在我的笔记本电脑上,删除1.6M小行需要约55秒,而截断相同的时间则需要几分之一秒).但是,如果有更快更安全的替代方案,我会全力以赴.
最后
以上就是愉快大船为你收集整理的mysql 授权truncate_有没有办法在MySQL中的TRUNCATE或DROP TABLE上有效地进行GRANT?的全部内容,希望文章能够帮你解决mysql 授权truncate_有没有办法在MySQL中的TRUNCATE或DROP TABLE上有效地进行GRANT?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复