向Postgres中的外部数据库表授予本地用户权限

问题描述

我根据文档使用dblink_connect建立了与外部数据库的连接:

CREATE SERVER fdtest FOREIGN DATA WRAPPER dblink_fdw OPTIONS (hostaddr '127.0.0.1',dbname 'foreign_test_db');

CREATE USER test_user WITH PASSWORD 'secret';
CREATE USER MAPPING FOR test_user SERVER fdtest OPTIONS (user 'test_user',password 'secret');
GRANT USAGE ON FOREIGN SERVER fdtest TO regress_dblink_user;
GRANT SELECT ON TABLE foo TO test_user;

\c - regress_dblink_user
SELECT dblink_connect('myconn','fdtest');


SELECT * FROM dblink('myconn','SELECT * FROM foo') AS t(a int,b text,c text[]);

最后的“ GRANT SELECT”似乎暗示着,如果要向fdtest外来数据包装器上的表foo授予对本地用户test_user的选择权限。但是,我如何解释此命令是它授予test_user在本地表foo(不存在)上选择的权限。不出所料,当我运行此命令时,我得到一个错误:

ERROR:  relation "foo" does not exist

我很想知道如何真正做到这一点。我希望能够限制本地用户只能从外部数据包装器访问某些表。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)