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 也总是会被拒绝