我认为这个问题的根本原因是我不理解权限和特权。
所以,为了搭建舞台,我的设置是一个DB,叫它MyDb。
我有两个用户,spu1和u1,spu1是超级用户,u1是‘常规’用户。MyDb的所有者是spu1。我认为我还应该说,u1具有创建数据库&创建从组角色继承的角色特权。
我有一个模式sch1,它是一个用户定义的模式。
在这个模式中,我有一个表,称为tbl1,还有一个物化视图,称为mvw1。
tbl1's的所有者是spu1,mvw1 1‘S的所有者是u1。
在当前设置中,如上文所述,我不能将mvw1刷新为u1或spu1。我只是得到了以下有趣的错误(我已经搜索了很多次,但没有找到任何完全解决了我的设置)。
ERROR: permission denied for relation tbl1
********** Error **********
ERROR: permission denied for relation tbl1
SQL state: 42501我发现
我试图找出丢失的权限(S)(理想情况下是最低要求),我需要授予常规用户u1,以便在以他们身份登录时刷新此视图。
第一种选择,虽然很高兴知道,但并不能解决我的问题。第二个选项似乎实际上是在向非超级用户授予超级用户权限,或者更确切地说,授予比我需要的更大的权限。
如果有人能向我解释到底发生了什么(或者指出我在描述解决问题时遗漏了什么信息),让我知道我的第二个选择实际上是走的路还是更好的选择?
非常感谢!
发布于 2018-07-16 15:33:53
另一个选项是创建spu1和u1都属于/继承的(非超级用户)组角色(例如“刷新器”),并将该组角色指定为物化视图的所有者。
https://dba.stackexchange.com/questions/171932
复制相似问题