如何使用postgres_fdw设置外部表的权限



源数据位于数据库keyspublic架构中的keys表中(参考pg docs: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/videos

  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. vidsdb中连接为维德s时,尝试访问外部表:
vids=> select * from keys;
ERROR:  permission denied for foreign table keys

我不理解,因为用户keys是外部数据库中key表的所有者。这里该怎么办?

来自@jjanes:的评论

错误消息表明问题在本地方面";。外部表的本地重新刷新由vids知道,而vids没有权限访问它。因此,它永远不会弄清楚keys是否可以访问外部上的keys

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

grant all on table keys to clips;

相关内容

  • 没有找到相关文章

最新更新