mysql使用视图报错,EXPLAIN/SHOW can not be issued; lacking privileges for underlying table

有一张员工表staff

添加视图,仅读2个字段
CREATE VIEW staff_view AS SELECT name,mobile FROM staff;

添加视图权限
GRANT select, SHOW VIEW ON staff_view TO 'test'@'%' IDENTIFIED BY 'test';

查询视图时,报错提示 EXPLAIN/SHOW can not be issued; lacking privileges for underlying table

网上说是因为没有给staff表增加select权限

但是视图的作用之一不是为了安全性吗,如果staff表增加了查看权限,那直接查表不就行了?staff_view没有起到应有的作用?

有了视图之后可以完全不暴露表名的。
从视图的创建语句就可以直到,它是一个select的别称记录,如果你连读取数据的读取权限也没有的话,视图也是无法工作的。
但是视图名称和表名完全没有限制,你可以任意命名,获取数据时只使用视图名称,可以对原本的表进行保护。
有帮助请采纳,还有不懂的可以继续追问~