从架构中删除能力视图/列出所有表

Posted

技术标签:

【中文标题】从架构中删除能力视图/列出所有表【英文标题】:Remove ability view/list all table from schema 【发布时间】:2018-08-08 04:51:01 【问题描述】:

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

【问题讨论】:

对不起,我认为它们足够接近,但你是对的。 【参考方案1】:

要禁止用户在数据库的 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 关键字是可选的。

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

在 SCHEMA 模式名称中的所有表上 撤销对引用架构中所有表的指定权限。

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

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

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

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

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

【讨论】:

以上是关于从架构中删除能力视图/列出所有表的主要内容,如果未能解决你的问题,请参考以下文章

从视图及其所有相关表中删除记录

是否有一个 postgres 命令来列出/删除所有物化视图?

sql 列出表和视图中的所有列

列出 sql server 2012 中的架构名称和所有者

如何将集合视图上选择的所有单元格列出到另一个视图中

如何列出为 postgres 中的表创建的索引