ユーザーを削除する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
ユーザーはGitLabインスタンスから削除できます。削除できるのは次のいずれかの方法によります:
- ユーザー自身。
- 管理者として
ユーザーを削除すると、そのユーザーネームスペース内のすべてのプロジェクトが削除されます。
自分のアカウントを削除する
- 提供形態: GitLab.com、GitLab Self-Managed
GitLab Self-Managedインスタンスでは、この機能はデフォルトで無効になっています。インスタンスのdelay_user_account_self_deletion設定を有効にするには、アプリケーション設定APIを使用します。
アカウントの削除をスケジュールできます。アカウントを削除すると、削除保留状態になります。通常、削除は1時間以内に行われますが、次のアカウントでは最大7日かかる場合があります:
- コメント、イシュー、マージリクエスト、注記、またはスニペットに関連付けられている
- 有料プランの一部ではない
アカウントが削除保留中の場合:
- アカウントはブロックされます。
- 同じユーザー名で新しいアカウントを作成することはできません。
- 最初にメールアドレスを変更しない限り、同じプライマリメールアドレスで新しいアカウントを作成することはできません。
アカウントが削除された後、任意のユーザーが同じユーザー名でユーザーアカウントを作成できます。別のユーザーがユーザー名を取得した場合、それを取り戻すことはできません。
自分のアカウントを削除するには:
- 左側のサイドバーで、自分のアバターを選択します。
- プロファイルの編集を選択します。
- 左側のサイドバーで、アカウントを選択します。
- アカウントを削除を選択します。
GitLab.comでアカウントを削除できない場合は、GitLabからアカウントとデータを削除するための個人情報リクエストを送信してください。
ユーザーとユーザーのコントリビュートを削除する
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed、GitLab Dedicated
前提要件:
- インスタンスの管理者である。
ユーザーを削除するには:
- 左側のサイドバーの下部で、管理者を選択します。
- 概要 > ユーザーを選択します。
- ユーザーを選択します。
- アカウントタブで、以下を選択します:
- ユーザーを削除を選択して、ユーザーのみを削除し、関連レコードを保持します。選択したユーザーが任意のグループの唯一のオーナーである場合、このオプションは使用できません。
- ユーザーとコントリビュートを削除を選択して、ユーザーとそれに関連するレコードを削除します。このオプションでは、ユーザーがグループの唯一の直接のオーナーであるすべてのグループ(およびこれらのグループ内のプロジェクト)も削除されます。継承された所有権は適用されません。
ユーザーとコントリビュートを削除オプションを使用すると、意図したよりも多くのデータが削除される可能性があります。詳細については、関連レコードを参照してください。
関連レコード
ユーザーを削除するときは、次のいずれかを選択できます:
- ユーザーのみを削除し、コントリビュートをシステム全体の「Ghostユーザー」に移動します:
@ghostは、削除されたすべてのユーザーのコントリビュートのコンテナとして機能します。- ユーザーのプロファイルと個人プロジェクトは、Ghostユーザーに移動される代わりに削除されます。
- ユーザーとそのコントリビュートを完全に削除します:
どちらの場合も、コミットはユーザー情報を保持するため、Gitリポジトリ内のデータ整合性が維持されます。
削除の代替手段は、ユーザーをブロックすることです。
ユーザーが不正行為レポートまたはスパムログから削除されると、これらの関連レコードは常に削除されます。
関連レコードの削除オプションは、APIと管理者エリアでリクエストできます。
GitLab Self-Managedインスタンスでルートアカウントを削除する
- 提供形態: GitLab Self-Managed
ルートアカウントは、システムで最も特権のあるアカウントです。ルートアカウントを削除すると、インスタンスに他の管理者がいない場合、インスタンスの管理者エリアへのアクセスを失う可能性があります。
UIまたはGitLab Railsコンソールを使用して、ルートアカウントを削除できます。
ルートアカウントを削除する前に:
- ルートアカウントのプロジェクトまたはパーソナルアクセストークンを作成し、ワークフローで使用している場合は、ルートアカウントから新しい管理者に、必要な権限または所有権をすべて譲渡します。
- GitLab Self-Managedインスタンスをバックアップします。
- 代わりに、ルートアカウントを非アクティブ化またはブロックすることを検討してください。
UIを使用する
前提要件:
- GitLab Self-Managedインスタンスの管理者である必要があります。
ルートアカウントを削除するには:
- 管理者エリアで、管理者アクセス権を持つ新しいユーザーを作成します。これにより、ルートアカウントの削除に関連するリスクを軽減しながら、インスタンスへの管理者アクセスを維持できます。
- ルートアカウントを削除します。
GitLab Railsコンソールを使用します
データを変更するコマンドは、正しく実行されなかった場合、または適切な条件下で実行されなかった場合、損害を与える可能性があります。最初にテスト環境でコマンドを実行し、復元できるバックアップインスタンスを準備してください。
前提要件:
- GitLab Railsコンソールにアクセスできる必要があります。
ルートアカウントを削除するには、Railsコンソールで次のようにします:
別の既存のユーザーに管理者アクセス権を付与します:
user = User.find(username: 'Username') # or use User.find_by(email: 'email@example.com') to find by email user.admin = true user.save!これにより、ルートアカウントの削除に関連するリスクを軽減しながら、インスタンスへの管理者アクセスを維持できます。
ルートアカウントを削除するには、次のいずれかを実行します:
ルートアカウントをブロックします:
# This needs to be a current admin user current_user = User.find(username: 'Username') # This is the root user we want to block user = User.find(username: 'Username') ::Users::BlockService.new(current_user).execute(user)ルートユーザーを非アクティブ化します:
# This needs to be a current admin user current_user = User.find(username: 'Username') # This is the root user we want to deactivate 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ログと、管理者エリアのバックグラウンドジョブビューのRetries(再試行)セクションにあります。
削除されるユーザーがイテレーション機能(イシューをイテレーションに追加するなど)を使用していた場合は、イシューに記載されている回避策を使用してユーザーを削除する必要があります。