【发布时间】:2017-04-17 19:45:15
【问题描述】:
我创建了一个外部数据包装器,并为 2 个用户创建了用户映射,一个是管理员,另一个只有对表的只读访问权限。 当我尝试使用只读用户查询时出现错误:
ERROR: permission denied for schema testing LINE 1: SELECT * FROM testing.bldg ^ ********** Error ********** ERROR: permission denied for schema testing SQL state: 42501 Character: 15
这是我的设置: Amazon RDS 中的 Postgres 9.6.1,两个数据库都是同一个 AWS RDS 实例的一部分。 当我使用只读用户直接连接到远程数据库时,我能够查询表,只有在使用 fdw 时才会出现问题。
当我查询这个“select * from pg_foreign_table;”时作为只读使用 我看到了所有的外表。
我尝试了以下方法:
grant usage on schema ...
grant select on table...
GRANT USAGE ON FOREIGN SERVER ...
任何想法。
【问题讨论】:
-
只是为了确认 - 一旦您将远程只读用户切换到您的
user mapping中的远程管理员用户而不更改任何其他内容,相同的查询又可以工作了吗? -
您创建的用户映射是什么?在
psql中尝试\deu+。远程数据库上的用户是否在架构上拥有USAGE权限? -
# psql -U readonly_qa -h xx -d local_db psql (9.6.2, server 9.6.1) SSL连接(协议:TLSv1.2,密码:ECDHE-RSA-AES256-GCM-SHA384 , bits: 256, compression: off) local_db=> \deu+ 用户映射列表服务器 |用户名 | FDW 选项 -------------+-------------+-------- -------------------------------- remote_db_fdw |甘道夫 | (“用户”'gandalf',密码'king')remote_db_fdw |只读_qa | (“用户”'readonly_qa',密码'queen')remote_db_fdw1 |甘道夫 | (3 行)local_db=>
-
@LeoC 我有 2 个用户映射,当我说查询有效时,我的意思是我直接使用同一个用户连接到远程数据库,两个数据库都在同一个集群上,所以存在管理员和只读用户在同一个集群上。我将尝试删除只读用户的用户映射并查看。
标签: postgresql amazon-rds foreign-data-wrapper