无法使用Postgres FDW访问外部表

时间:2019-02-07 18:31:44

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

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

我使用导入模式命令导入了表:

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应该将视图和表视为相同。

2 个答案:

答案 0 :(得分:0)

看起来像您在用户映射中为本地用户使用的远程用户,并且外部服务器对表(或包含表的模式)没有必需的权限。 / p>

答案 1 :(得分:0)

用户“ 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是本地模式。