Postgres 用户无法读取表的明显原因?

GPP*_*GPP 5 permissions role read-only-database

情况:作为角色/组成员的 PG 用户(非超级用户,继承自父角色)无法从特定表中读取数据,即使已指定这些对象权限:

  • 数据库名称 - 连接
  • 选择 - 真
  • 插入 - 真
  • 删除 - true
  • 更新 - 正确

我无法弄清楚该tablename_tablename_id_seq对象的作用——我的所有数据库表和序列之间存在 1:1 关系,但不确定这如何影响许可。

我尝试将“用法”的复选框单击为True(在 Navicat 中),但用户仍然无法从指定的表中读取。

我尝试在 PG Admin 3&4、Navicat 和 Postico 中编辑这些权限...知道我在哪里陷入困境吗?

小智 11

  1. 通过以下方式连接到相应的数据库\c DATABASE_NAME
  2. 它应该具有连接权限:GRANT CONNECT ON DATABASE DATABASE_NAME TO USER_NAME;
  3. 授予使用架构的权限GRANT USAGE ON SCHEMA public TO USER_NAME;
  4. 授予对所有表进行选择的权限GRANT SELECT ON ALL TABLES IN SCHEMA public TO USER_NAME;


Nei*_*gan 1

我会尝试以下步骤:

  1. 他们可以连接到数据库吗?
  2. 他们usage对架构有权限吗?
  3. 他们对桌子有选择权限吗?
  4. 您使用行安全吗?
  5. 您使用列安全性吗?如果他们只有对列的选择权限foo而您尝试select *这是一个错误
  6. 他们的是什么search_path?如果是foo,public并且他们可以访问public.mytable但不能访问,foo.mytable那就是一个错误。尝试表的完全限定名称 ( $schemaName.tableName)