删除用户账户

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: JihuLab.com, 私有化部署

用户可以从极狐GitLab 实例中删除,方式如下:

  • 用户自己删除。
  • 管理员删除。
删除用户会删除该用户命名空间中的所有项目。

删除自己的账户#

History
    • 在极狐GitLab 16.0 中引入了用户自己删除账户和用户记录删除之间的延迟,使用名为 delay_delete_own_user功能标志 。在 JihuLab.com 上默认启用。
在极狐GitLab 私有化部署中,默认情况下此功能不可用。为了使其可用,管理员可以 [启用功能标记](../../../administration/feature_flags.md) 名为 `delay_delete_own_user`。在 JihuLab.com 上,此功能是可用的。在极狐GitLab 专用版中,此功能不可用。

在 JihuLab.com 上,从删除自己的账户到账户被删除需要七天。在此期间:

  • 该用户被 阻止

  • 不能使用相同的用户名创建新账户。

    七天时间结束后,任何用户都可以使用之前使用过的用户名创建用户账户。因此,您不应该假设在七天后能够使用该用户名创建新账户,因为它可能会被占用。

    如果您先从账户中删除电子邮件地址,可以 使用相同的电子邮件地址创建新账户

以下内容将在一小时内删除:

  • 没有议题、评论、备注、合并请求或代码片段的账户。
  • 付费命名空间下的账户。

作为用户,删除自己的账户:

  1. 在左侧边栏中,选择您的头像。
  2. 选择 编辑资料
  3. 在左侧边栏中,选择 账户
  4. 选择 删除账户

使用相同的电子邮件地址创建新账户#

在 JihuLab.com 上,在 删除自己的账户和账户被删除之间的时间内, 不能使用相同的电子邮件地址或用户名创建新账户。

要使用相同的电子邮件地址创建新账户,在删除账户之前:

  1. 添加备用电子邮件地址 到您的账户。
  2. 将您的主要电子邮件更改为这个 新的备用电子邮件地址。
  3. 从您的账户中删除现在的备用电子邮件地址
  4. 删除自己的账户

现在,您可以使用原始主要电子邮件地址 创建新账户

删除用户和用户贡献#

  • Tier: 基础版, 专业版, 旗舰版
  • Offering: 私有化部署

作为管理员,删除用户账户:

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 选择一个用户。
  4. 账户 标签下,选择:
    • 删除用户 仅删除用户但保留他们的 关联记录。如果 选择的用户是任何群组的唯一所有者,则不能使用此选项。
    • 删除用户和贡献 删除用户及其关联记录。此选项也会删除用户作为群组唯一直接所有者的所有群组(以及这些群组中的项目)。继承的所有权不适用。
使用 **删除用户和贡献** 选项可能会导致删除超出预期的数据。有关详细信息,请参阅 [关联记录](#associated-records)。

关联记录#

删除用户时,可以选择:

  • 仅删除用户,但将贡献移动到系统范围的 "幽灵用户":
    • @ghost 作为所有已删除用户贡献的容器。
    • 用户的个人资料和个人项目被删除,而不是移动到幽灵用户。
  • 删除用户及其贡献,包括:

在这两种情况下,提交保留 用户信息,因此在 Git 仓库中保持数据完整性。

删除的替代方法是 阻止用户

当用户从 滥用报告 或垃圾日志中删除时,这些关联记录始终被删除。

删除关联记录选项可以在 API 中请求,也可以在 管理员 区域中请求。

用户批准与用户 ID 相关联。其他用户贡献没有关联的用户 ID。当您删除用户并将其贡献移至 "幽灵用户" 时,批准贡献会引用丢失或无效的用户 ID。与其删除用户,请考虑 [阻止](../../../administration/moderate_users.md#block-a-user)、[禁止](../../../administration/moderate_users.md#ban-a-user) 或 [停用](../../../administration/moderate_users.md#deactivate-a-user) 他们。

删除极狐GitLab 私有化部署实例上的 root 账户#

  • Offering: 私有化部署
root 账户是系统上权限最高的账户。删除 root 账户可能会导致无法访问实例的 [**管理员** 区域](../../../administration/admin_area.md),如果实例上没有其他管理员可用。

可以使用 UI 或 极狐GitLab Rails 控制台 删除 root 账户。

在删除 root 账户之前:

  1. 如果已为 root 账户创建任何 项目个人访问令牌 并在工作流程中使用它们,请将任何必要的权限或所有权从 root 账户转移给新管理员。
  2. 备份极狐GitLab 私有化部署实例
  3. 考虑 停用阻止 root 账户。

使用 UI#

先决条件:

  • 必须是极狐GitLab 私有化部署实例的管理员。

要删除 root 账户:

  1. 管理员 区域,创建具有管理员访问权限的新用户。这确保您在删除 root 账户的同时保持对实例的管理员访问权限并降低相关风险。
  2. 删除 root 账户

使用极狐GitLab Rails 控制台#

更改数据的命令可能会在不正确或不合适的条件下运行时导致损坏。始终在测试环境中运行命令,并准备好备份实例以便恢复。

先决条件:

  • 必须能够访问极狐GitLab Rails 控制台。

要删除 root 账户,请在 Rails 控制台中:

  1. 给另一个现有用户管理员访问权限:

    ruby
    user = User.find(username: 'Username') # 或使用 User.find_by(email: 'email@example.com') 通过电子邮件查找 user.admin = true user.save!

    这确保您在删除 root 账户的同时保持对实例的管理员访问权限并降低相关风险。

  2. 要删除 root 账户,请执行以下操作之一:

    • 阻止 root 账户:

      ruby
      1# 需要是当前管理员用户 2current_user = User.find(username: 'Username') 3 4# 这是我们要阻止的 root 用户 5user = User.find(username: 'Username') 6 7::Users::BlockService.new(current_user).execute(user)
    • 停用 root 用户:

      ruby
      1# 需要是当前管理员用户 2current_user = User.find(username: 'Username') 3 4# 这是我们要停用的 root 用户 5user = User.find(username: 'Username') 6 7::Users::DeactivateService.new(current_user, skip_authorization: true).execute(user)

故障排除#

删除用户导致 PostgreSQL 空值错误#

有一个已知问题导致用户无法删除,并生成以下错误:

plaintext
ERROR: null value in column "user_id" violates not-null constraint

该错误可以在 PostgreSQL 日志 中找到,也可以在 管理员 区域的 后台作业视图重试 部分中找到。