首页 > 解决方案 > 从架构中删除能力视图/列出所有表

问题描述

使用 Amazon Redshift 数据库。我有一个名为“Public”的模式和另一个名为“SchemaX”的模式。我创建了一个名为“User1”的用户;并让他访问“SchemaX”。我想阻止“User1”查看或列出我的“公共”模式中的可用表。如何做到这一点?

标签: amazon-redshift

解决方案


要禁止用户在数据库的 PUBLIC 模式中创建对象,请使用REVOKE命令删除该权限。

REVOKE [ GRANT OPTION FOR ]
{ { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] }
ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] }
FROM { username | GROUP group_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]

SELECT撤销使用SELECT语句 从表或视图中选择数据的权限。

INSERT撤销使用INSERT语句或 COPY 语句 将数据加载到表中的特权。

UPDATE撤销使用UPDATE语句 更新表列的权限。

DELETE撤销从表中删除数据行 的权限。

REFERENCES 撤销创建外键约束的权限。您应该撤销对被引用表和被引用表的此特权。

ALL [ PRIVILEGES ] 立即撤销指定用户或组的所有可用权限。PRIVILEGES关键字是可选的。

ON [ TABLE ] table_name 撤销对表或视图的指定权限。TABLE关键字是可选的。

ON ALL TABLES IN SCHEMA schema_name 撤销对引用模式中所有表的指定权限。

GROUP group_name 撤销指定用户组的权限。

PUBLIC 撤销所有用户的指定权限。PUBLIC表示始终包含所有用户的组。单个用户的权限包括授予PUBLIC的权限、授予用户所属的任何组的权限以及授予用户单独的任何权限的总和。

CASCADE 如果用户拥有具有授予选项的权限并且已将该权限授予其他用户,则其他用户所拥有的权限是依赖权限。如果第一个用户持有的特权或授权选项正在被撤销并且存在依赖特权,则如果指定了CASCADE,则这些依赖特权也会被撤销;否则,撤销操作失败。

例如,如果用户 A 已向用户 B 授予了带有授予选项的权限,并且用户 B 已将权限授予用户 C,则用户 A 可以撤销用户 B 的授予选项并使用 CASCADE 选项依次撤销用户 B 的权限用户 C。

RESTRICT 仅撤销用户直接授予的那些权限。此行为是默认行为。


推荐阅读