信誉好的企业网站建设/外贸网站建设案例
1. 数据库版本
目前测试了 Mysql 8.0.19 ,Mysql 8.0.20,Mysql 5.7.22 都存在该问题(5.7和8.0版本应该都有该问题)
2. 问题描述
同事工作中发现了如下奇怪问题(直接上图)
问题现象:
我们发现我们给用户赋予全局的 delete,create,index,alter权限,同时给用户赋予某张表的 select,insert,update,delete权限。然后对这张表进行 delete 操作时,居然报没有这张表的读权限。
# 注意这里是全局权限和表级别权限不一致,如果是数据库级别权限和表级别权限不一致,问题也是一样的。但是全局权限和数据库级别权限不一致时,并不会出现该问题,见下图:
3.问题处理
查询 mysql bug 很早就有人提过这个bug,但是不知道为什么一直没有出patch。该问题的临时解决方案有如下两种
1)在高级别赋予合适的权限
比如上面的例子中你给全局权限中加上 select 权限就行 grant select on *.* to 'test_privileges'@'%';
2)只在一个级别赋权
上面的例子中,你把全局权限去掉就行(实际生产回收权限一定已小心)
revoke delete,create,index,alter on *.* from 'test_privileges'@'%';
关联文章:
https://bugs.mysql.com/bug.php?id=97971
https://bugs.mysql.com/bug.php?id=87420
关于Mysql权限你真的都了解?