我无法查看我的 Amazon Redshift 集群的系统表中其他用户生成的数据。怎样才能查看这些表?
简短描述
默认情况下,Amazon Redshift 普通用户无权查看其他用户的数据。只有 Amazon Redshift 数据库超级用户有权查看所有数据库。
解决方法
您可以添加具有 UNRESTRICTED 访问权限的 SYSLOG ACCESS 参数,以便普通用户能够查看系统表中其他用户生成的数据。
**注意:**使用 SYSLOG ACCESS 的普通用户无法查看超级用户表。只有超级用户才能查看其他超级用户表。
1. 以超级用户身份连接到 Amazon Redshift 数据库。
2. 运行 SQL 命令 ALTER USER,类似以下内容:
test=# ALTER USER testuser WITH SYSLOG ACCESS UNRESTRICTED;
ALTER USER
注意:ALTER USER 所需权限为超级用户、拥有 ALTER USER 权限的用户以及想要更改自己密码的用户。
普通用户现在拥有 UNRESTRICTED 访问权限的 SYSLOG ACCESS。
3. 以超级用户身份断开与 Amazon Redshift 数据库的连接。
4. 以具有 UNRESTRICTED 访问权限的 SYSLOG ACCESS 的普通用户身份连接到 Amazon Redshift 数据库。
5. 通过运行类似于以下内容的 SQL 命令来测试普通用户的访问权限:
test=> select * from stv_inflight;
-[ 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
在示例输出中,请注意,普通用户现在有权查看其他用户表。