Help us learn about your current experience with the documentation. Take the survey.

删除用户账户

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

用户可以从 GitLab 实例中被删除,方式包括:

  • 用户自己删除
  • 管理员删除

删除用户会删除该用户命名空间下的所有项目。

删除自己的账户

  • 在 GitLab.com 上,此功能可用。
  • 在 GitLab Dedicated 上,此功能不可用。
  • 在 GitLab Self-Managed 上,此功能的可用性由 delay_user_account_self_deletion 应用设置控制,默认为禁用。使用 应用设置 API 为实例启用 delay_user_account_self_deletion 设置。

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

  • 该用户被屏蔽

  • 您无法使用相同的用户名创建新账户。

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

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

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

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

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

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

如果您无法删除自己的账户,请提交个人数据请求,要求从 GitLab 中移除您的账户和数据。

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

在 GitLab.com 上,在您删除自己的账户与账户被删除之间的时间段内,您无法使用相同的电子邮件地址或用户名创建新账户。

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

  1. 向您的账户添加辅助电子邮件地址
  2. 将您的主电子邮件更改为这个新的辅助电子邮件地址
  3. 从您的账户中删除现在作为辅助的电子邮件地址
  4. 删除您的账户

现在您可以使用与原始主电子邮件地址相同的电子邮件地址创建新账户

删除用户和用户贡献

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab Self-Managed, GitLab Dedicated

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

  1. 在左侧边栏底部,选择 管理员
  2. 选择 概览 > 用户
  3. 选择一个用户。
  4. 账户 标签下,选择:
    • 删除用户:仅删除用户但保留其相关记录。如果所选用户是任何组的唯一所有者,则不能使用此选项。
    • 删除用户和贡献:删除用户及其相关记录。此选项还会删除用户是组直接所有者的所有组(以及这些组中的项目)。继承的所有权不适用。

使用 删除用户和贡献 选项可能会导致删除超出预期的数据。有关更多详细信息,请参阅相关记录

相关记录

删除用户时,您可以选择:

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

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

删除的替代方案是屏蔽用户

当用户从滥用报告或垃圾日志中被删除时,这些相关记录总是被移除。

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

用户审批与用户 ID 相关联。其他用户贡献没有关联的用户 ID。当您删除用户并将其贡献移动到"幽灵用户"时,审批贡献引用的是缺失或无效的用户 ID。建议不要删除用户,而是考虑屏蔽封禁停用他们。

删除 GitLab Self-Managed 实例上的 root 账户

  • Offering: GitLab Self-Managed

root 账户是系统上权限最高的账户。删除 root 账户可能会导致失去对实例 管理员区域 的访问权限,如果实例上没有其他管理员可用。

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

在删除 root 账户之前:

  1. 如果您为 root 账户创建了任何项目个人访问令牌并在工作流程中使用它们,请将必要的权限或所有权从 root 账户转移到新管理员。
  2. 备份您的 GitLab Self-Managed 实例
  3. 考虑停用屏蔽 root 账户。

使用 UI

先决条件:

  • 您必须是 GitLab Self-Managed 实例的管理员。

要删除 root 账户:

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

使用 GitLab Rails 控制台

如果未正确运行或在正确条件下运行,更改数据的命令可能会造成损害。始终先在测试环境中运行命令,并准备好备份实例进行恢复。

先决条件:

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

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

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

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

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

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

    • 屏蔽 root 账户:

      # 这需要是当前管理员用户
      current_user = User.find(username: 'Username')
      
      # 这是我们想要屏蔽的 root 用户
      user = User.find(username: 'Username')
      
      ::Users::BlockService.new(current_user).execute(user)
    • 停用 root 用户:

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

故障排除

删除用户导致 PostgreSQL null 值错误

存在一个已知问题,导致用户未被删除,并生成以下错误:

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

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

如果被删除的用户使用了迭代功能,例如将问题添加到迭代中,您必须使用问题中记录的解决方法来删除用户。