【问题标题】:Cannot access foreign table using Postgres FDW无法使用 Postgres FDW 访问外部表
【发布时间】:2019-07-01 23:07:24
【问题描述】:

我在 Postgres 10 中设置了一个外部表。角色“role1”已被授予使用 postgres 超级用户设置的外部服务器 (fs) 的使用权。

我使用 import schema 命令导入了表:

IMPORT FOREIGN SCHEMA f_schema LIMIT TO (my_fdw_table) FROM fs INTO ls;

效果很好。

但是,当我尝试查询表时,出现以下错误:

SELECT * FROM my_fdw_table LIMIT 1;
ERROR:  permission denied for view my_fdw_table
CONTEXT:  remote SQL command: ...

我的理解是 FDW 应该对视图和表一视同仁。

【问题讨论】:

    标签: postgresql postgresql-10 database-permissions foreign-data-wrapper


    【解决方案1】:

    看起来您在用户映射中为本地用户使用的远程用户,而外部服务器对表(或包含它的架构)没有所需的权限。

    【讨论】:

      【解决方案2】:

      用户“role1”应该为自己创建用户映射,例如:

      CREATE USER MAPPING FOR role1 SERVER fs OPTIONS (USER 'role1', PASSWORD 'password1');
      IMPORT FOREIGN SCHEMA f_schema LIMIT TO (my_fdw_table) FROM SERVER fs INTO ls;
      

      此外,如果“role1”不是数据库的所有者,它应该从其所有者那里获得访问权限:

      GRANT USAGE ON SCHEMA ls TO role1;
      

      假设 ls 是本地架构。

      【讨论】:

        猜你喜欢
        • 2020-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-02
        • 1970-01-01
        • 2020-01-29
        • 2019-02-09
        相关资源
        最近更新 更多