mysql 42s01,mysql 1143_ERROR 1143 (42000): SELECT command denied to user

 2023-10-21 阅读 35 评论 0

摘要:同事要update?? MySQL ?UAT 環境的基礎數據表,發出了這樣的授權申請語句。覺得沒什么問題,也就給批準了。你能看出這個授權語句有什么問題嗎?e1534 這個用戶已經存在,并且可以連接上這個庫。GRANT INSERT, UPDATE ,DELETE ON `adm`.`

同事要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到底需要什么權限。而不是單獨審核。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/156799.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息