3

我在 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 应该对视图和表一视同仁。

4

2 回答 2

2

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

于 2019-02-08T07:23:59.447 回答
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是本地模式。

于 2020-09-25T01:31:04.483 回答