# DROP USER
#### 功能描述
删除指定的用户。
#### 注意事项
- 执行DROP USER操作需要具备创建用户的权限才能执行，当执行删除用户的指令成功后，同名的Schema也会同时删除。
- 当显式指定CASCADE级联删除依赖用户的对象时，如果级联对象处于锁定状态，此级联对象无法被删除，直到对象被解锁或锁定级联对象的线程终止之后再删除对象。
- 在数据库中删除用户时，如果依赖用户的对象在其他数据库中或者依赖用户的对象是其他数据库，请先手动删除其他数据库中的依赖对象或直接删除依赖数据库，再删除用户，即DROP USER不支持跨数据库进行级联删除。
- 跨数据库删除用户前，需先删除该用户所在数据库中由该用户创建的同名Schema。
- 在删除用户时，需要先删除该用户拥有的所有对象并且收回该用户在其他对象上的权限，或者通过指定CASCADE级联删除该用户拥有的对象和被授予的权限。
- 在多租户场景下，删除组用户时，业务用户也会同时被删除，如果指定CASCADE级联删除组用户时，删除业务用户时也需同时显式指定CASCADE。
- 如果用户下存在创建GDS外表时指定的错误表，则无法通过DROP USER指定CASCADE关键字直接删除用户。
 
#### 语法格式
```
DROP USER [ IF EXISTS ] user_name [, ...] [ CASCADE | RESTRICT ];
```
![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002793788039.png)
#### 参数说明
- **IF EXISTS**
  判断指定的用户是否存在。
  - 如果指定的用户存在，则成功删除。
  
  - 如果指定的用户不存在，不会进行删除操作，仅产生一个NOTICE提示，用于告知指定的用户不存在。
   
- **user_name**
  需要删除的用户名。
  取值范围：数据库中已存在的用户名。
  
- **CASCADE \| RESTRICT**
  可选，是否级联删除依赖于该用户的对象。未指定时，默认为RESTRICT。
  - CASCADE：级联删除依赖用户的对象，并收回授予该用户的权限。
  
  - RESTRICT：如果用户存在依赖的对象或被授予了其他对象的权限，则拒绝删除该用户。
  
  
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  在GaussDB中，配置文件gaussdb.conf中的配置参数enable_kill_query影响级联删除用户对象的行为：
  - 当参数enable_kill_query为on，且使用CASCADE模式删除用户时，会自动结束锁定用户级联对象的线程，并直接删除用户。
  
  - 当参数enable_kill_query为off，且使用CASCADE模式删除用户时，会等待锁定级联对象的线程结束之后再删除用户。
    
 
#### 示例
```
--创建用户jim，登录密码为********。
gaussdb=# CREATE USER jim PASSWORD '********';
--删除不存在的tom用户。
gaussdb=# DROP USER IF EXISTS tom;
NOTICE:  role "tom" does not exist, skipping
DROP ROLE
--删除用户。
gaussdb=# DROP USER jim CASCADE;
```
#### 相关链接
[ALTER USER](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0219.html)，[CREATE USER](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0281.html)
