GCLOUD Postgres,使用外部数据包装器扩展结果权限被拒绝关系

GCLOUD Postgres, using foreign data wrapper extesion results permission denied for relation

我真的被以下问题困住了。

在 GCloud SQL 我有一个 运行 postgres 的实例。 该实例包含两个数据库。从一个数据库 (source_db) 我想使用 postgres_fdw 扩展访问另一个数据库的 (another_db) table (foreign_table)。我目前使用的食谱是:

1)

CREATE EXTENSION postgres_fdw; 
CREATE SERVER foreign_db
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (dbname 'another_db', port '5432', host '<A_PRIVATE_IP>'); 
CREATE USER MAPPING for guest
SERVER foreign_db
OPTIONS (user 'guest', password 's3cr3t'); 
CREATE FOREIGN TABLE foreign_table
(
 // columns descripions
)
SERVER foreign_db OPTIONS (table_name 'foreign_table');

-- Alternatively I also tried with
CREATE SCHEMA external;
IMPORT FOREIGN SCHEMA public from SERVER foreign_db into external;
GRANT SELECT ON TABLE foreign_table TO guest;

上面的命令运行没有错误,但是当我尝试实际访问 table 时,我得到了这个:

如果使用“外部”模式

source_db=> select 1 from external.foreign_table limit 1;
ERROR:  permission denied for relation foreign_table
CONTEXT:  Remote SQL command: SELECT NULL FROM public.foreign_table (*)

如果不使用“外部”模式

source_db=> select 1 from foreign_table limit 1;
ERROR:  permission denied for relation foreign_table
CONTEXT:  Remote SQL command: SELECT NULL FROM public.foreign_table

唯一有点异味的是即使我使用的是外部架构,错误消息 (at *) 也会显示“public.foreign_table”而不是“external.foreign_table”...但是我不知道这实际上意味着什么 :S

据我研究,无法以超级用户身份登录 posgres 实例,因为 Gcloud 的 SQL 服务不允许这样做,也无法按顺序编辑 pg_hba.conf 文件调整客户端的认证事务。

我搜索了很多地方,但没有找到我能做些什么来解决这个问题。在我查看的网站和页面中,有以下列表

P.S.

我能够在 运行 本地的 postgres 实例上完成此操作。

远程服务器上的用户 guest 没有从 table 访问 SELECT 的权限。由于远程服务器上的查询是作为用户 guest 执行的,因此您会收到错误消息。

GRANT 远程服务器 table 上的 SELECT 权限授予用户。