删除数据库用户帐户。

语法

DROP USER name [ CASCADE ]

说明

DROP USER 可删除指定的用户。要删除超级用户,您自己必须是超级用户;要删除超级用户以外的用户,您必须具有 CREATEROLE 特权。

如果集群中的任何数据库仍在引用一个用户,则不能将其删除;如果删除,则会引发错误。在删除用户之前,必须删除其拥有的所有对象(或重新分配它们的所有权)并取消之前向用户授予的所有特权。

不过,并非必须删除与用户相关的角色成员资格;DROP USER 会自动取消目标用户在其他角色中的所有成员资格,以及其他角色在目标用户中的成员资格。不会删除其他角色,也不会产生其他影响。

另外,如果用户仅有的对象属于用户拥有的、与用户同名的 schema,则可以指定 CASCADE 选项。在这种情况下,必须由超级用户发出 DROP USER name CASCADE 命令,且所指定用户、schema 以及 schema 中的所有对象都将被删除。

参数

参数 说明
name 要删除的用户的名称。
CASCADE 如果已指定,还会删除用户拥有的、与用户同名的 schema(以及属于 schema 成员的用户拥有的所有对象),前提是不存在依赖于用户或 schema 的其他依赖项。

示例

删除不拥有对象、也未被授予有关其他对象的任何特权的用户帐户:

DROP USER john;

删除用户帐户 john,它未被授予有关任何对象的任何特权,而且在名为 john 的 schema(由 john 用户所有)以外不拥有任何对象:

DROP USER john CASCADE;