无法使用 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
是本地架构。
我在 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
是本地架构。