我在Postgres 10中设置了一个外表。角色"role1"已被授予使用postgres
超级用户设置的外部服务器 (fs( 的使用权。
我使用导入架构命令导入了表:
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: ...
我的理解是,外籍家政工人应该一视同仁地对待视图和表格。
看起来您在本地用户的用户映射中使用的远程用户和外部服务器对表(或包含它的架构(没有所需的权限。
用户"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
是本地架构。