无法使用 Postgres FDW 访问外部 table

Cannot access foreign table using Postgres FDW

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

我使用导入架构命令导入了 table:

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

效果很好。

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

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

我的理解是 FDW 应该把视图和 table 一样对待。

看起来您在本地用户的 用户映射 中使用的远程用户和外部服务器在 table 上没有所需的权限(或包含它的模式)。

用户“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 是本地架构。