

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 示例
<a name="r_REVOKE-examples"></a>

以下示例从 GUESTS 用户组撤消对 SALES 表的 INSERT 权限。此命令使 GUESTS 的成员无法通过使用 INSERT 命令将数据加载到 SALES 表中。

```
revoke insert on table sales from group guests;
```

以下示例从用户 `fred` 撤消对 QA\$1TICKIT 架构中所有表的 SELECT 权限。

```
revoke select on all tables in schema qa_tickit from fred;
```

以下示例撤消用户 `bobr` 从视图中选择的权限。

```
revoke select on table eventview from bobr;
```

以下示例从所有用户撤消在 TICKIT 数据库中创建临时表的权限。

```
revoke temporary on database tickit from public;
```

以下示例从用户 `cust_name` 撤消对 `cust_phone` 表的 `cust_profile` 和 `user1` 列的 SELECT 权限。

```
revoke select(cust_name, cust_phone) on cust_profile from user1;
```

以下示例从 `cust_name` 组中撤消对 `cust_phone` 和 `cust_contact_preference` 列的 SELECT 权限，并撤消对 `cust_profile` 表的 `sales_group` 列的 UPDATE 权限。

```
revoke select(cust_name, cust_phone), update(cust_contact_preference) on cust_profile from group sales_group;
```

下面的示例演示如何使用 ALL 关键字从 `cust_profile` 组撤消对 `sales_admin` 表的三列的 SELECT 和 UPDATE 权限。

```
revoke ALL(cust_name, cust_phone,cust_contact_preference) on cust_profile from group sales_admin;
```

以下示例从 `cust_name` 用户撤消对 `cust_profile_vw` 视图的 `user2` 列的 SELECT 权限。

```
revoke select(cust_name) on cust_profile_vw from user2;
```

## 撤销通过数据共享创建的数据库的 USAGE 权限的示例
<a name="r_REVOKE-examples-datashare"></a>

以下示例从 `13b8833d-17c6-4f16-8fe4-1a018f5ed00d` 命名空间撤销对 `salesshare` 数据共享的访问权限。

```
REVOKE USAGE ON DATASHARE salesshare FROM NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
```

以下示例从 `Bob` 撤销对 `sales_db` 的 USAGE 权限。

```
REVOKE USAGE ON DATABASE sales_db FROM Bob;
```

以下示例从 `Analyst_role` 撤销对 `sales_schema` 的 USAGE 权限。

```
REVOKE USAGE ON SCHEMA sales_schema FROM ROLE Analyst_role;
```

## 撤销限定范围权限的示例
<a name="r_REVOKE-examples-scoped"></a>

以下示例从 `Sales` 角色撤销 `Sales_db` 数据库中所有当前和将来架构的使用权限。

```
REVOKE USAGE FOR SCHEMAS IN DATABASE Sales_db FROM ROLE Sales;
```

以下示例从用户 `alice` 撤销授予对 `Sales_db` 数据库中所有当前和将来表的 SELECT 权限的能力。`alice` 保留对 `Sales_db` 中所有表的访问权限。

```
REVOKE GRANT OPTION SELECT FOR TABLES IN DATABASE Sales_db FROM alice;
```

以下示例从用户 `bob` 撤销对 `Sales_schema` 架构中函数的 EXECUTE 权限。

```
REVOKE EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema FROM bob;
```

以下示例从 `Sales` 角色撤销对 `ShareDb` 数据库 `ShareSchema` 架构中所有表的所有权限。指定架构时，您还可以使用由两部分组成的格式 `database.schema` 指定架构的数据库。

```
REVOKE ALL FOR TABLES IN SCHEMA ShareDb.ShareSchema FROM ROLE Sales;
```

下面的示例与前一个示例相同。您可以使用 `DATABASE` 关键字而不是使用由两部分组成的格式来指定架构的数据库。

```
REVOKE ALL FOR TABLES IN SCHEMA ShareSchema DATABASE ShareDb FROM ROLE Sales;
```

## 撤销 ASSUMEROLE 权限的示例
<a name="r_REVOKE-examples-assumerole"></a>

以下是撤销 ASSUMEROLE 权限的示例。

超级用户必须通过在集群上运行一次以下语句来为用户和组启用 ASSUMEROLE 的使用权限。

```
revoke assumerole on all from public for all;
```

以下语句撤消用户 reg\$1user1 在所有角色中对所有操作的 ASSUMEROLE 权限。

```
revoke assumerole on all from reg_user1 for all;
```

## 撤销 ROLE 权限的示例
<a name="r_REVOKE-examples-role"></a>

下面的示例将从 sample\$1role2 撤销 sample\$1role1。

```
CREATE ROLE sample_role2;
GRANT ROLE sample_role1 TO ROLE sample_role2;
REVOKE ROLE sample_role1 FROM ROLE sample_role2;
```

下面的示例将撤销 user1 的系统权限。

```
GRANT ROLE sys:DBA TO user1;
REVOKE ROLE sys:DBA FROM user1;
```

下面的示例将从 user1 撤销 sample\$1role1 和 sample\$1role2。

```
CREATE ROLE sample_role1;
CREATE ROLE sample_role2;
GRANT ROLE sample_role1, ROLE sample_role2 TO user1;
REVOKE ROLE sample_role1, ROLE sample_role2 FROM user1;
```

下面的示例将从 user1 撤销具有 ADMIN OPTION 的 sample\$1role2。

```
GRANT ROLE sample_role2 TO user1 WITH ADMIN OPTION;
REVOKE ADMIN OPTION FOR ROLE sample_role2 FROM user1;
REVOKE ROLE sample_role2 FROM user1;
```

下面的示例将从 sample\$1role5 撤销 sample\$1role1 和 sample\$1role2。

```
CREATE ROLE sample_role5;
GRANT ROLE sample_role1, ROLE sample_role2 TO ROLE sample_role5;
REVOKE ROLE sample_role1, ROLE sample_role2 FROM ROLE sample_role5;
```

下面的示例将撤销 sample\$1role1 的 CREATE SCHEMA 和 DROP SCHEMA 系统权限。

```
GRANT CREATE SCHEMA, DROP SCHEMA TO ROLE sample_role1;
REVOKE CREATE SCHEMA, DROP SCHEMA FROM ROLE sample_role1;
```