删除数据库用户帐户。
语法
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;