Mysql视图权限设置的踩坑经历
1.事件背景
今天臨近中午飯點(diǎn)時(shí),開發(fā)同事發(fā)來需求,在mariadb庫創(chuàng)建兩個(gè)視圖,要求指定帳號有只讀權(quán)限。
很簡單的需求,連上服務(wù)器,兩條grant命令一刷,fulsh privileges 回車,樓主就安心吃飯去了。
2.重點(diǎn)來了,待樓主用餐歸來,(還在樓下打了盤王者農(nóng)藥,排位兩連跪(┬_┬)),
上午發(fā)來需求的同事找我了。
3.柳暗花明
瞬間蒙圈的我,回了個(gè)稍等,就趕緊去查原因了。
在反復(fù)確認(rèn)grant沒問題后,樓主持續(xù)蒙圈了。此時(shí)距離接到這個(gè)問題,已經(jīng)過去了20分鐘,
甚是焦急啊,明明一個(gè)小需求怎么會(huì)這樣呢。
就在樓主萬分無奈時(shí),突然點(diǎn)到設(shè)計(jì)視圖的高級頁面,看到了安全性‘Definer’這個(gè)點(diǎn)。
萬能的某度給了我答案,當(dāng)視圖的安全性為DEFINER時(shí),數(shù)據(jù)庫中存在DEFINER指定的用戶,也就是圖中的定義者所填寫的。并且該用戶擁有對應(yīng)的權(quán)限,才能執(zhí)行。與當(dāng)前用戶是否有權(quán)限無關(guān)。
當(dāng)視圖的安全性為INVOKER時(shí),只要執(zhí)行者有執(zhí)行權(quán)限,就可以成功執(zhí)行。
上圖時(shí)我修改后問題解決的圖了,因?yàn)楫?dāng)時(shí)寫的是‘root@192.168.%.%’且視圖的安全性為DEFINER引起的。當(dāng)然,如果開發(fā)不是指定帳號只讀的話,也可以將安全性定義INVOKER,這樣只要有對這個(gè)視圖有權(quán)限的都可以查看了。
參考資料: http://pdf.us/2018/02/24/679.html
轉(zhuǎn)載于:https://blog.51cto.com/12906823/2103942
總結(jié)
以上是生活随笔為你收集整理的Mysql视图权限设置的踩坑经历的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个人博客 SEO 优化(2):站内优化
- 下一篇: 区块链技术选型