首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建了一个视图,但之后失去了对基础表的特权。

问创建了一个视图,但之后失去了对基础表的特权。
EN

Stack Overflow用户
提问于 2015-10-24 22:37:32
回答 1查看 31关注 0票数 1

假设有一个关系表(A,B,C),我得到了它的所有特权。我做了一个视图V( A )查看表的A,那么如果我被取消了表中的所有特权,视图到底会发生什么?

据我所知,视图是在调用时动态创建的表抽象(如果不是物化的)。由于我对基础表没有任何特权,所以无法调用视图V,它需要基础表上的SELECT特权。所以这个视图基本上是从系统中删除的。

我的理解正确吗?如果视图是物化的,会发生什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-24 23:15:49

不,这不是完全正确的。但是,请注意,安全模型在所有rdbms中都是不同的。因为您只将mysql放到标签列表中,所以我的答案将是mysql特定的。

在mysql中,可以使用create语句中的SQL安全选项定义视图的安全模型。可以将其设置为定义器(定义视图的用户)或调用方(执行视图的用户)。如果将其设置为definer,mysql将检查用户的访问权限,该权限定义了执行视图的视图,而不是用户的访问权限。如果您拥有超级特权,那么您可以使用任何用户帐户作为定义者,而不仅仅是您自己的。

Mysql检查定义者或调用者(基于设置)在引用视图时是否有权访问底层对象。如果视图使用定义器选项,而定义器可以访问底层对象,而您不使用,则视图仍然会给出结果。

有关详细信息,请参阅mysql文档中的视图访问控制。

尽管如此,如果您碰巧有mysql v5.0.15或更早版本,那么对底层对象的访问权限只会检查一次:在视图的定义处。

注: mysql不支持物化视图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33324096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档