【问题标题】:Postgres: Permission denied for schema even though grants were givenPostgres:即使授予了授权,也拒绝架构的权限
【发布时间】: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”是可行的。

标签: postgresql grant


【解决方案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】:

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

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

【讨论】:

    猜你喜欢
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2021-12-18
    • 1970-01-01
    • 2019-09-17
    • 2016-03-16
    • 2011-10-17
    相关资源
    最近更新 更多