首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL 9.3.13,如何用不同的用户刷新物化视图?

PostgreSQL 9.3.13,如何用不同的用户刷新物化视图?
EN

Database Administration用户
提问于 2017-04-25 13:14:54
回答 1查看 14.1K关注 0票数 16

我认为这个问题的根本原因是我不理解权限和特权。

所以,为了搭建舞台,我的设置是一个DB,叫它MyDb。

我有两个用户,spu1和u1,spu1是超级用户,u1是‘常规’用户。MyDb的所有者是spu1。我认为我还应该说,u1具有创建数据库&创建从组角色继承的角色特权。

我有一个模式sch1,它是一个用户定义的模式。

在这个模式中,我有一个表,称为tbl1,还有一个物化视图,称为mvw1。

tbl1's的所有者是spu1,mvw1 1‘S的所有者是u1。

问题:

在当前设置中,如上文所述,我不能将mvw1刷新为u1或spu1。我只是得到了以下有趣的错误(我已经搜索了很多次,但没有找到任何完全解决了我的设置)。

代码语言:javascript
复制
ERROR:  permission denied for relation tbl1
********** Error **********

ERROR: permission denied for relation tbl1
SQL state: 42501

我发现

  1. 将mvw1的所有者更改为spu1,允许我以spu1的形式刷新。
  2. 运行下面的命令使我可以将mvw1刷新为u1。

我试图找出丢失的权限(S)(理想情况下是最低要求),我需要授予常规用户u1,以便在以他们身份登录时刷新此视图。

第一种选择,虽然很高兴知道,但并不能解决我的问题。第二个选项似乎实际上是在向非超级用户授予超级用户权限,或者更确切地说,授予比我需要的更大的权限。

如果有人能向我解释到底发生了什么(或者指出我在描述解决问题时遗漏了什么信息),让我知道我的第二个选择实际上是走的路还是更好的选择?

非常感谢!

EN

回答 1

Database Administration用户

发布于 2018-07-16 15:33:53

另一个选项是创建spu1和u1都属于/继承的(非超级用户)组角色(例如“刷新器”),并将该组角色指定为物化视图的所有者。

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

https://dba.stackexchange.com/questions/171932

复制
相关文章

相似问题

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