同事要update?? MySQL ?UAT 環境的基礎數據表,發出了這樣的授權申請語句。覺得沒什么問題,也就給批準了。
你能看出這個授權語句有什么問題嗎?e1534 這個用戶已經存在,并且可以連接上這個庫。
GRANT INSERT, UPDATE ,DELETE ON `adm`.`t_code` TO 'e1534'@'192.80.176.100';
但他在更新的時候報了如下錯誤:
mysql> update?t_code set name='b' where id =1;
mysql 42s01。ERROR 1143 (42000): SELECT command denied to user'e1534'@'192.80.176.100'for column 'id' in table 't_code'
為什么呢,因為他在update語句中用到了where條件,但它申請的授權語句中卻沒有對這張的select權限。
在mysql中如果只申請了對表的update,delete權限的時候,那么在update和delete的語句中就不能出現where子句,否則就會遇到上述錯誤。
如果只有對表的update權限是可以進行全表更新的,但這樣的操作在生產環境幾乎是不被允許的(特殊情況除外).
mysql> update??t_code set name='b' ;
Query OK, 1 row affected (0.01 sec)
MySQL server,Rows matched: 1? Changed: 1? Warnings: 0
要解決這個問題,還要給update的表,授予select的權限。
mysql>GRANT SELECT ON `adm`.`t_code` TO 'e1534'@'192.80.176.100';
所以在給MySQL 用戶授權的時候,不但要檢查授權的語句是否正確,還要看要執行的sql到底需要什么權限。而不是單獨審核。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态