Mysql视图权限设置的踩坑经历

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql视图权限设置的踩坑经历相关的知识,希望对你有一定的参考价值。

1.事件背景
今天临近中午饭点时,开发同事发来需求,在mariadb库创建两个视图,要求指定帐号有只读权限。
很简单的需求,连上服务器,两条grant命令一刷,fulsh privileges 回车,楼主就安心吃饭去了。
技术分享图片

2.重点来了,待楼主用餐归来,(还在楼下打了盘王者农药,排位两连跪(┬_┬)),
上午发来需求的同事找我了。
技术分享图片

3.柳暗花明
瞬间蒙圈的我,回了个稍等,就赶紧去查原因了。
在反复确认grant没问题后,楼主持续蒙圈了。此时距离接到这个问题,已经过去了20分钟,
甚是焦急啊,明明一个小需求怎么会这样呢。
就在楼主万分无奈时,突然点到设计视图的高级页面,看到了安全性‘Definer’这个点。

技术分享图片

万能的某度给了我答案,当视图的安全性为DEFINER时,数据库中存在DEFINER指定的用户,也就是图中的定义者所填写的。并且该用户拥有对应的权限,才能执行。与当前用户是否有权限无关。
当视图的安全性为INVOKER时,只要执行者有执行权限,就可以成功执行。
上图时我修改后问题解决的图了,因为当时写的是‘[email protected]%.%’且视图的安全性为DEFINER引起的。当然,如果开发不是指定帐号只读的话,也可以将安全性定义INVOKER,这样只要有对这个视图有权限的都可以查看了。

参考资料: http://pdf.us/2018/02/24/679.html

以上是关于Mysql视图权限设置的踩坑经历的主要内容,如果未能解决你的问题,请参考以下文章

.md文件上传视频的踩坑经历小记

vue项目中使用tinymce富文本的踩坑经历

关于django中间件使用的踩坑经历

axios请求接口的踩坑之路

关于黎曼几何初学者的踩坑经历

美团热修复Robust的踩坑之旅-使用篇