我在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应该将视图和表视为相同。
答案 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
是本地模式。