我想允许 Amazon Redshift 用户查看其他用户在 Amazon Redshift 集群的系统表中生成的数据。
解决方法
默认情况下,只有 Amazon Redshift 数据库超级用户才有权限查看所有数据库。要查看其他用户在系统表中生成的数据,请添加具有 UNRESTRICTED 访问权限的 SYSLOG ACCESS 参数。
**注意:**具有 SYSLOG ACCESS 的用户无法查看超级用户表。只有超级用户才能查看其他超级用户表。
完成以下步骤:
-
以超级用户身份连接到 Amazon Redshift 数据库。
-
运行 SQL ALTER USER 命令:
test=# ALTER USER testuser WITH SYSLOG ACCESS UNRESTRICTED;
ALTER USER
**注意:**请将 testuser 替换为您向其提供访问权限的用户名。此外,请查看执行 ALTER USER 所需的权限。
-
以超级用户身份断开与 Amazon Redshift 数据库的连接。
-
以拥有 SYSLOG ACCESS(具有 UNRESTRICTED 访问权限)的用户身份连接到 Amazon Redshift 数据库。
-
运行以下命令以测试您的访问权限:
test=> select * from stv_inflight;
以下示例输出显示,您授予了 UNRESTRICTED 访问权限的用户现在有权查看用户的表。
-[ RECORD 1 ]--------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
userid | 100
slice | 12811
query | 3036
label | default
xid | 35079530
pid | 1073746910
starttime | 2022-09-15 07:09:15.894317
text | select * from my_schema.dw_lu_tiers_test a, my_schema.dw_lu_tiers_test;
suspended | 0
insert_pristine | 0
concurrency_scaling_status | 0
-[ RECORD 2 ]--------------+---------------------------------------------------------------------------------------------------------------------------------------------------
userid | 181
slice | 12811
query | 3038
label | default
xid | 35079531
pid | 1073877909
starttime | 2022-09-15 07:09:17.694285
text | select * from stv_inflight;
suspended | 0
insert_pristine | 0
concurrency_scaling_status | 0