更新时间:2024-12-06 GMT+08:00
DROP USER
功能描述
删除用户,同时会删除同名的schema。
注意事项
- 须使用CASCADE级联删除依赖用户的对象(除数据库外)。当删除用户的级联对象时,如果级联对象处于锁定状态,则此级联对象无法被删除,直到对象被解锁或锁定级联对象的进程被终止。
- 在数据库中删除用户时,如果依赖用户的对象在其他数据库中或者依赖用户的对象是其他数据库,请用户先手动删除其他数据库中的依赖对象或直接删除依赖数据库,再删除用户。即drop user不支持跨数据库进行级联删除。
- 在多租户场景下,删除组用户时,业务用户也会同时被删除,如果指定CASCADE级联删除,那么删除业务用户时同时也指定CASCADE。如果在删除某个用户失败时,会报错,同时其他用户也无法成功删除。
- 如果用户A创建的GDS外表指定的错误表在用户B的schema下,则无法通过drop user指定CASCADE关键字直接删除用户B。
- DROP USER若提示role is being used by other users错误,可能原因为CLEAN CONNECTION过程存在线程无法及时响应信号,出现连接清理不完全的情况,需要再次执行CLEAN CONNECTION。
- DROP对象操作(如DATABASE、USER/ROLE、SCHEMA、TABLE、VIEW等对象)存在数据丢失风险,尤其含带CASCADE级联删除场景,会将关联的对象一并删除,操作需谨慎,操作前需考虑数据备份。
- 更多开发设计规范参见总体开发设计规范。
语法格式
DROP USER [ IF EXISTS ] user_name [, ...] [ CASCADE | RESTRICT ];
参数说明
- IF EXISTS
如果指定的用户不存在,发出一个notice而不是抛出一个错误。
- user_name
待删除的用户名。
取值范围:已存在的用户名。
- CASCADE | RESTRICT
- CASCADE:级联删除依赖用户的表等对象。级联删除用户的时候,会删除掉owner是这个用户的对象,并清理掉其他对象对这个用户的授权信息。
- RESTRICT:如果用户还有任何依赖的对象,则拒绝删除该用户(缺省行为)。
在GaussDB(DWS)中,存在一个配置参数enable_kill_query,此参数在配置文件postgresql.conf中。此参数影响级联删除用户对象的行为:- 当参数enable_kill_query为on ,且使用CASCADE模式删除用户时,会自动kill锁定用户级联对象的进程,并删除用户。
- 当参数enable_kill_query为off,且使用CASCADE模式删除用户时,会等待锁定级联对象的进程结束之后再删除用户。
示例
删除用户jim:
1
|
DROP USER jim CASCADE; |
相关链接
父主题: DDL语法