

 从补丁 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/)。

# DROP USER
<a name="r_DROP_USER"></a>

从数据库中删除用户。可以使用一条 DROP USER 命令删除多个用户。您必须是数据库超级用户或具有 DROP USER 权限才能运行此命令。

## 语法
<a name="r_DROP_USER-synopsis"></a>

```
DROP USER [ IF EXISTS ] name [, ... ]
```

## 参数
<a name="r_DROP_USER-parameters"></a>

IF EXISTS  
一个子句，指示如果指定的用户不存在，则命令不应进行任何更改，并返回一条指示用户不存在的消息，而不是终止并显示错误。  
此子句在编写脚本时很有用，可使在 DROP USER 针对不存在的用户运行时脚本不会失败。

 *name*   
要删除的用户的名称。您可以使用逗号来分隔各个用户名，从而指定多个用户。

## 使用说明
<a name="r_DROP_USER-notes"></a>

您无法删除名为 `rdsdb` 的用户或数据库的管理员用户（通常名为 `awsuser` 或 `admin`）。

如果用户拥有任何数据库对象（例如架构、数据库、表或视图），或者用户具有对数据库、表、列或组的任何权限，则您不能删除该用户。如果您试图删除此类用户，则会收到以下错误之一。

```
ERROR: user "username" can't be dropped because the user owns some object [SQL State=55006]

ERROR: user "username" can't be dropped because the user has a privilege on some object [SQL State=55006]
```

有关如何查找数据库用户拥有的对象的详细说明，请参阅《知识中心》**中的[如何解决 Amazon Redshift 中的“无法删除用户”错误？](https://repost.aws/knowledge-center/redshift-user-cannot-be-dropped)。

**注意**  
Amazon Redshift 在删除用户前只检查当前数据库。如果用户拥有数据库对象或者对另一数据库中的对象具有任何权限，DROP USER 不会返回错误。如果您删除的用户拥有另一个数据库中的对象，这些对象的所有者将更改为“未知”。

如果用户拥有对象，请先删除对象或者将其所有权更改为其他用户，然后再删除原始用户。如果用户具有对象的权限，请先撤消权限，然后再删除用户。以下示例说明先删除对象、更改所有权、撤消权限然后再删除用户的过程。

```
drop database dwdatabase;
alter schema dw owner to dwadmin;
revoke all on table dwtable from dwuser;
drop user dwuser;
```

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

以下示例删除名为 paulo 的用户：

```
drop user paulo;
```

以下示例删除两个用户，即 paulo 和 martha：

```
drop user paulo, martha;
```

在以下示例中，如果用户 paulo 存在，则删除该用户；如果不存在，则不执行任何操作并返回一条消息：

```
drop user if exists paulo;
```