更新时间:2024-06-03 GMT+08:00
DROP USER
功能描述
DROP USER用于GaussDB数据库中执行对用户的删除操作,该权限需要具备创建用户的权限才能执行。当执行删除用户的指令成功后,同时会删除同名的schema。
注意事项
- 须使用CASCADE级联删除依赖用户的对象(除数据库外)。当删除用户的级联对象时,如果级联对象处于锁定状态,则此级联对象无法被删除,直到对象被解锁或锁定级联对象的线程被终止。
- 在数据库中删除用户时,如果依赖用户的对象在其他数据库中或者依赖用户的对象是其他数据库,请用户先手动删除其他数据库中的依赖对象或直接删除依赖数据库,再删除用户。即DROP USER不支持跨数据库进行级联删除。
- 在删除用户时,需要先删除该用户拥有的所有对象并且收回该用户在其他对象上的权限,或者通过指定CASCADE级联删除该用户拥有的对象和被授予的权限。
- 在多租户场景下,删除组用户时,业务用户也会同时被删除,如果指定CASCADE级联删除,那么删除业务用户时同时也指定CASCADE。如果在删除某个用户失败时,会报错,同时其他用户也无法成功删除。
- 如果用户下存在创建GDS外表时指定的错误表,则无法通过DROP USER指定CASCADE关键字直接删除用户。
语法格式
DROP USER [ IF EXISTS ] user_name [, ...] [ CASCADE | RESTRICT ];
参数说明
- IF EXISTS
使用该参数时,如果指定的用户不存在,发出一个notice而不是抛出一个错误,故使用该参数可以避免出现报错。
- user_name
待删除的用户名。
取值范围:数据库中已存在的用户名。
- CASCADE | RESTRICT
- CASCADE:级联删除依赖用户的对象,并收回授予该用户的权限。
- RESTRICT:如果用户还有任何依赖的对象或被授予了其他对象的权限,则拒绝删除该用户(缺省行为)。
在GaussDB中,存在一个配置参数enable_kill_query,此参数在配置文件gaussdb.conf中。此参数影响级联删除用户对象的行为:
- 当参数enable_kill_query为on ,且使用CASCADE模式删除用户时,会自动kill锁定用户级联对象的线程,并删除用户。
- 当参数enable_kill_query为off,且使用CASCADE模式删除用户时,会等待锁定级联对象的线程结束之后再删除用户。
示例
--创建用户jim,登录密码为********。 gaussdb=# CREATE USER jim PASSWORD '********'; --创建用户kim,登录密码为********。 gaussdb=# CREATE USER kim IDENTIFIED BY '********'; --创建用户tom。 gaussdb=# CREATE USER TOM PASSWORD '********'; --创建用户TOM。 gaussdb=# CREATE USER "TOM" PASSWORD '********'; --如果需要创建具有“创建数据库”权限的用户,则需要加CREATEDB关键字。 gaussdb=# CREATE USER dim CREATEDB PASSWORD '********'; --查看用户dim的权限。 gaussdb=# \du dim List of roles Role name | Attributes | Member of -----------+------------+----------- dim | Create DB | {} (可以看到用户dim具有CREATEDB的权限) --修改jim用户密码。 gaussdb=# ALTER USER jim IDENTIFIED BY '**********' REPLACE '********'; --为用户jim追加CREATEROLE权限。 gaussdb=# ALTER USER jim CREATEROLE; --查看用户jim追加的CREATEROLE权限。 gaussdb=# \du jim List of roles Role name | Attributes | Member of -----------+-------------+----------- jim | Create role | {} --锁定jim账户。 gaussdb=# ALTER USER jim ACCOUNT LOCK; --解锁jim账户。 gaussdb=# ALTER USER jim ACCOUNT UNLOCK; --修改用户密码。 gaussdb=# ALTER USER dim WITH PASSWORD '********'; --修改用户名。 gaussdb=# ALTER USER dim RENAME TO lisa; --删除用户。 gaussdb=# DROP USER kim CASCADE; gaussdb=# DROP USER jim CASCADE; gaussdb=# DROP USER lisa CASCADE; gaussdb=# DROP USER TOM CASCADE; gaussdb=# DROP USER "TOM" CASCADE;
相关链接
父主题: D