【发布时间】:2022-06-14 05:31:47
【问题描述】:
根据我对PostgreSQL documentation 的理解,角色“pg_read_all_data”应该授予角色持有者执行“Select * from SCHEMA.TABLE”和类似查看数据的能力。但是,我不确定为什么这对我来说在实践中不起作用。
我在帐户“X”上创建了一个示例架构和数据库,例如: Image showing schema and table structure
但是,当我使用角色“pg_read_all_data”登录角色“Y”(启用登录选项)并尝试执行时: SELECT * FROM test.test_table
编辑:我已通过以下命令将角色“pg_read_all_data”分配给超级用户角色上的“Y”。
它抛出一个权限错误:SQL 错误 [42501]: ERROR: permission denied for schema test 位置:15
我有点不明白为什么当角色应该授予选择权限时会出现这种情况。谁能告诉我为什么会这样?
【问题讨论】:
-
pg_read_all_data是您授予另一个角色的role。您需要向我们展示您运行的GRANT,以将其分配给现有的role。还要定义'帐户“Y”'是什么意思?添加答案作为问题的更新。 -
为我工作。您没有提供足够的信息来重现或诊断这种情况。
-
@AdrianKlaver 我已更新问题以反映您的 cmets。帐户“Y”表示角色“Y”(启用“登录”选项的单独创建的角色)。我在超级用户帐户上通过 GRANT pg_read_all_data to "Y" 将 pg_read_all_data 授予 "Y"。
-
什么是完整版?
select version() -
PostgreSQL 14.3,由 Visual C++ build 1914 编译,64 位
标签: postgresql