1

源数据位于数据库键的公共模式中的表中 (参考 pg 文档: https ://www.postgresql.org/docs/current/postgres-fdw.html ):

create table keys (
    id varchar not null,
    keyname varchar not null,
    created timestamp default current_timestamp not null,
    modified timestamp default current_timestamp not null
);

引用用户/模式/数据库是vids / public / vids

  1. 设置服务器连接
CREATE SERVER keys
        FOREIGN DATA WRAPPER postgres_fdw
        OPTIONS (host '1.2.3.4', port '5432', dbname 'keys');
  1. 创建用户映射
CREATE USER MAPPING FOR vids
        SERVER keys
        OPTIONS (user 'keys', password 'keys');
  1. 创建表映射
create foreign table keys (
    id varchar not null,
    keyname varchar not null,
    created timestamp default current_timestamp not null,
    modified timestamp default current_timestamp not null
) server keys options (schema_name 'public', table_name 'keys');
  1. vids db中作为vids连接时尝试访问外部表:
vids=> select * from keys;
ERROR:  permission denied for foreign table keys

鉴于用户键是外部数据库中表的所有者,我不明白。这里应该做什么?

4

1 回答 1

0

来自@jjanes 的评论:

错误消息表明问题出在本地”。外部表的本地表示已由它拥有vids并且vids没有权限。因此它永远无法确定是否可以在外部keys访问keys

所以对我的步骤的更正是:

 grant all on table keys to clips;
于 2020-10-03T18:10:35.723 回答