使用Amazon Redshift数据库。我有一个名为“ Public”的架构,另一个名为“ SchemaX”的架构。我创建了一个名为“ User1”的用户;并授予他访问“ SchemaX”的权限。我想阻止“ User1”查看或列出“公共”模式中的可用表。如何做到这一点?
答案 0 :(得分:0)
要禁止用户在数据库的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 语句从表或视图中选择数据的特权。
插入 撤消使用 INSERT 语句或COPY语句将数据加载到表中的特权。
更新 撤消使用 UPDATE 语句更新表列的特权。
删除 撤消从表中删除数据行的特权。
参考 撤消创建外键约束的特权。您应该在引用表和引用表上都撤消此特权。
所有[特权] 立即从指定的用户或组撤消所有可用特权。 PRIVILEGES 关键字是可选的。
打开[TABLE] table_name 撤消对表或视图的指定特权。 TABLE 关键字是可选的。
在SCHEMA schema_name中的所有表上 撤消对引用架构中所有表的指定特权。
组组名 撤消指定用户组的特权。
公共 撤消所有用户的指定特权。 公共代表始终包含所有用户的组。单个用户的特权包括授予 PUBLIC 的特权,授予该用户所属的任何组的特权以及分别授予该用户的所有特权的总和。
CASCADE 如果某个用户持有具有“授予”特权的特权,并且已将该特权授予其他用户,则这些其他用户拥有的特权就是从属特权。如果第一位用户拥有的特权或授予选项被吊销,并且存在从属特权,则如果指定了 CASCADE ,那些从属特权也将被吊销;否则,撤消操作将失败。
例如,如果用户A已向用户B授予了具有授予选项的特权,而用户B已向用户C授予了特权,则用户A可以撤消用户B的授予选项,然后使用CASCADE选项来撤消来自用户C的特权。
限制 仅撤销用户直接授予的那些特权。此行为是默认行为。