DROP USER
从数据库中删除用户。可以使用一条 DROP USER 命令删除多个用户。您必须是数据库超级用户或具有 DROP USER 权限才能运行此命令。
语法
DROP USER [ IF EXISTS ] name [, ... ]
参数
- IF EXISTS
-
一个子句,指示如果指定的用户不存在,则命令不应进行任何更改,并返回一条指示用户不存在的消息,而不是终止并显示错误。
此子句在编写脚本时很有用,可使在 DROP USER 针对不存在的用户运行时脚本不会失败。
- name
-
要删除的用户的名称。您可以使用逗号来分隔各个用户名,从而指定多个用户。
使用说明
您无法删除名为 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 中的“无法删除用户”错误?
注意
Amazon Redshift 在删除用户前只检查当前数据库。如果用户拥有数据库对象或者对另一数据库中的对象具有任何权限,DROP USER 不会返回错误。如果您删除的用户拥有另一个数据库中的对象,这些对象的所有者将更改为“未知”。
如果用户拥有对象,请先删除对象或者将其所有权更改为其他用户,然后再删除原始用户。如果用户具有对象的权限,请先撤消权限,然后再删除用户。以下示例说明先删除对象、更改所有权、撤消权限然后再删除用户的过程。
drop database dwdatabase; alter schema dw owner to dwadmin; revoke all on table dwtable from dwuser; drop user dwuser;
示例
以下示例删除名为 paulo 的用户:
drop user paulo;
以下示例删除两个用户,即 paulo 和 martha:
drop user paulo, martha;
在以下示例中,如果用户 paulo 存在,则删除该用户;如果不存在,则不执行任何操作并返回一条消息:
drop user if exists paulo;