系统表和视图中的数据可见性
系统表及视图中的数据有两类可见性:对用户可见和对超级用户可见。
只有具有超级用户权限的用户才能看到属于超级用户可见类别的表中的数据。普通用户可以查看对用户可见的表中的数据。要使普通用户能够访问对超级客户可见的表,GRANT请向普通用户授予对该表的 SELECT 权限。
默认情况下,在大多数对用户可见的表中,普通用户看不到其他用户生成的行。如果向普通用户授予无限制的 SYSLOG ACCESS,该用户便可以查看用户可见表中的所有行,包括由其他用户生成的行。有关更多信息,请参阅 ALTER USER 或 CREATE USER。SVV_TRANSACTIONS 中的所有行都对所有用户可见。
对于元数据视图,Amazon Redshift 不允许获得不受限 SYSLOG ACCESS 的用户查看。
注意
如果向用户授予对系统表的无限制访问权限,用户便可以看到由其他用户生成的数据。例如,STL_QUERY 和 STL_QUERY_TEXT 包含 INSERT、UPDATE 和 DELETE 语句的完整文本 (其中可能包含敏感的用户生成数据)。
超级用户可以查看所有表中的所有行。要使普通用户能够访问对超级客户可见的表,GRANT请向普通用户授予对该表的 SELECT 权限。
筛选系统生成的查询
与查询有关的系统表和视图(如 SVL_QUERY_SUMMARY、SVL_QLOG 等)通常包含大量自动生成的语句,Amazon Redshift 使用这些语句监控数据库的状态。这些系统生成的查询对超级用户可见,但用处不大。从使用 userid
列的系统表或视图中进行选择时,如果要过滤掉它们,则可在 WHERE 子句中添加条件 userid > 1
。例如:
select * from svl_query_summary where userid > 1