Postgres:即使授予了授权,也拒绝架构的权限

Posted

技术标签:

【中文标题】Postgres:即使授予了授权,也拒绝架构的权限【英文标题】:Postgres: Permission denied for schema even though grants were given 【发布时间】:2019-03-20 17:02:05 【问题描述】:

我正在运行 Postgres 10.4,目前感到困惑,因为我似乎无法将架构访问权限授予另一个角色。

我想做什么:

我有一个角色与一个架构,并希望从另一个角色访问架构及其表。所以我做了通常的(与其他模式一起工作的):

grant usage on schema myschema to newuser;

grant select on all tables in schema myschema to newuser;

这两个语句都作为架构的所有者运行。这样做时我没有遇到任何错误。

当我以新用户身份登录并尝试选择一些数据时:

select * from myschema.table;

我得到错误:

SQL Error [42501]: ERROR: permission denied for schema myschema

我可以看到newuser在“information_schema.role_table_grants”表中有正确的权限

它也适用于另一个角色和另一个架构。我一无所知。

【问题讨论】:

也许你连接到不同的数据库或不同的机器? \dn+ myschema(从psql 运行)是否在两台机器上产生相同的输出?您可以将结果添加到问题中吗? 嗨@LaurenzAlbe 这指出了我的错误。架构的所有者是另一个角色。我在它看起来之前搞砸了架构。从架构的实际所有者那里将 USAGE 授予“newuser”是可行的。 【参考方案1】:

第一步GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA name_schema TO name_user;

第二步GRANT USAGE ON SCHEMA name_schema TO name_user;

【讨论】:

您以“Try..”开头的帖子给人的印象是提出了一个实验来进一步分析问题,而不是实际解决问题。请改写以将其转换为肯定的答案,或创建有条件的答案(例如“您的问题可能是由……引起的。在这种情况下,解决方案是……”或删除答案并进行说明并发表评论问题。 仍然面临这个问题..不知道发生了什么! 谢谢,@Reaper_20。这对我有用。【参考方案2】:

它确实像我的问题中发布的那样有效,问题是我没有使用架构的所有者。

因此,请始终确保您从所有者角色授予对架构的访问权限。

【讨论】:

以上是关于Postgres:即使授予了授权,也拒绝架构的权限的主要内容,如果未能解决你的问题,请参考以下文章

Android kotlin:即使在授予权限后也获得 EACCES(权限被拒绝)

即使授予存储权限后,在三星手机上创建目录也被拒绝

即使用户授予位置权限检查,三星 note 20 也总是会被拒绝

在我的 PostGres 表上授予所有权限,但在尝试插入/选择时仍然收到“权限被拒绝”错误

存储访问框架 - 权限被拒绝问题,即使授予权限

即使在 Ar.js 中的浏览器中授予权限后,地理定位访问被拒绝弹出窗口也会显示