【问题标题】:Setting privileges on foreign table on Postgres在 Postgres 上设置外部表的权限
【发布时间】: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


【解决方案1】:

问题出在 PgAdmin III 上。外部表的 ACL 已更改,但 PgAdmin 未显示。命令行 \dp+ data_from_source 上的 Psql 按预期显示 ACL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多