【发布时间】:2022-06-14 17:56:41
【问题描述】:
外部表权限如何工作?一个简单的例子,source_db 和 destination_db 都是 Postgres 数据库。
source_db:
-- create user for user mapping
CREATE USER fdw_user WITH PASSWORD 'secret';
-- create table
CREATE TABLE data (value TEXT);
-- set privileges
GRANT ALL ON TABLE data TO fdw_user;
destination_db:
-- create extension
CREATE EXTENSION postgres_fdw;
-- create server
CREATE SERVER remote_source
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'source.domain.com', dbname 'source_db');
-- create user mapping
CREATE USER MAPPING
FOR PUBLIC
SERVER remote_source
OPTIONS (user 'fdw_user', password 'secret');
-- create foreign table
CREATE FOREIGN TABLE data_from_source(value TEXT)
SERVER remote_source
OPTIONS (table_name 'data');
现在为destination_db中的任何用户设置权限似乎都没有效果,比如
GRANT SELECT ON TABLE data_from_source TO localuser;
如何设置外部表的权限?
【问题讨论】:
-
它符合我的预期。你期望会发生什么?发生了什么?
-
最后一个“GRANT SELECT ON TABLE data_from_source TO localuser;”不要更改外表的ACL。顺便说一句,我使用的是 Postgres 9.3 版。
标签: postgresql privileges foreign-table