低权限数据库账号无法访问视图
一,问题描述
版本说明:
迪拜1.0.5
问题现象:
迪拜1.0.4升级到1.0.5时,创建的police_user用户,仅拥有所有库表数据的增,删,改,查功能。本来还能支持视图的查看。但实际上查询视图无权限
二,问题排查思路:
问题集中在无权限上:
- 给赋予show view,create view的权限,看能否查看视图 -- 实际是不能
- 视图权限和数据库用户有关:排查视图的创建语句 -- 确实是定义了definer
三,操作指导
- 在原来权限基础上,赋予新权限
grant select,insert,update,delete,show view,create view on *.* to 'police_user'@'%' identified by 'TGHksj#@567';
连上navicat,发现依然无法查看视图
- 使用含有全权限的账号flyway_user登录,查看视图的定义
选中视图->点击“设计视图”->点击“高级” 查看定义者
发现视图的定义者是 report_user@%
由于版本升级,我们将所有的report_user更新为flyway_user,新增了police_user只做数据的操作。并且删除了report_user
因此查询视图失败
再解释一下:视图安全性是Definer,因此查询视图会根据定义者的权限进行查询。report_user不存在了,自然无法查询视图
解决方法:解决方法很简单,删除视图,重新创建即可
四,常见问题原因记录
数据库迁移;变更数据库用户的过程中,未将所有数据库用户相关的数据变更时,会产生该错误。
五,更新记录
版本
功能
修改时间
修改人
V1.0
数据库视图无法查询
2022/4/12
张波
文档更新时间: 2022-04-12 14:23 作者:w18380581554