mysql 授权truncate_有没有办法在MySQL中的TRUNCATE或DROP TABLE上有效地进行GRANT?
我最近在
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?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Epic Games 在印度起诉谷歌:未
- 下一篇: Linux查看CUDA和cuDNN版本