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,保存
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享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 了解和调试应用程序