MySQL视图 definer & invoker 权限

视图的安全性为DEFINER时,数据库中存在DEFINER指定的用户,也就是图中的定义者所填写的。并且该用户拥有对应的权限,才能执行。与当前用户是否有权限无关。

当视图的安全性为INVOKER时,只要执行者有执行权限,就可以成功执行。

definer和invoker的区别:

在创建视图或者是存储过程的时候,是需要定义安全验证方式的(也就是安全性SQL SECURITY),其值可以为definer或invoker,表示在执行过程中,使用谁的权限来执行。

definer:由definer(定义者)指定的用户的权限来执行

invoker:由调用这个视图(存储过程)的用户的权限来执行

因此,当创建新的数据库并授权指定用户访问后,该用户默认是无法访问该数据库中新创建的视图的

解决办法:(均使用mysql中的root用户操作)
第一步:给该用户授权访问视图的权限

use community; # 切换到指定数据库中
GRANT SELECT, UPDATE, SHOW VIEW ON `v_popular_will` TO 'community_user'@'173.173.173.243'; # v_popular_will为视图名
SHOW GRANTS FOR 'community_user'@'173.173.173.243';  # 查看用户的权限                                   

这一步也可以通过root用户使用navicat连接数据库,找到视图,设计视图,高级,安全性中进行操作

第二步:通过root用户使用navicat连接数据库,找到视图,设计视图,高级,安全性:把definer修改成invoker,保存

posted @   哈喽哈喽111111  阅读(654)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2022-03-15 MinIO对接k8s使用
2022-03-15 安装krew
2022-03-15 使用 APM 中的 Service Map 了解和调试应用程序
点击右上角即可分享
微信分享提示