DROP USER [IF EXISTS] user [, user] ...
DROP USER
ステートメントは、1 つ以上の MySQL アカウントとその権限を削除します。 これにより、そのアカウントの権限行がすべての付与テーブルから削除されます。
mandatory_roles
システム変数値で指定されたロールは削除できません。
DROP USER
を使用するには、mysql
システムスキーマに対するグローバル CREATE USER
権限または DELETE
権限が必要です。 read_only
システム変数が有効になっている場合、DROP USER
にはさらに CONNECTION_ADMIN
権限 (または非推奨の SUPER
権限) が必要です。
MySQL 8.0.22 では、削除するアカウントの名前がストアドオブジェクトの DEFINER
属性として指定されている場合、DROP USER
はエラーで失敗します。 (つまり、アカウントを削除すると、格納されたオブジェクトが孤立する場合、ステートメントは失敗します。) 操作を実行するには、SET_USER_ID
権限が必要です。この場合、ステートメントはエラーで失敗するのではなく、警告付きで成功します。 特定のアカウントを DEFINER
属性として指定するオブジェクトの識別方法などの追加情報は、孤立したストアドオブジェクト を参照してください。
DROP USER
は、指定されたすべてのユーザーに対して成功するか、ロールバックされ、エラーが発生しても効果はありません。 デフォルトでは、存在しないユーザーを削除しようとすると、エラーが発生します。 IF EXISTS
句を指定すると、ステートメントは、存在しない指定ユーザーごとに、エラーではなく、警告を生成します。
ステートメントが成功した場合はバイナリログに書き込まれますが、失敗した場合は書き込まれず、ロールバックが発生して変更は行われません。 バイナリログに書き込まれるステートメントには、指定されたすべてのユーザーが含まれます。 IF EXISTS
句が指定されている場合、これには存在せず、削除されなかったユーザーも含まれます。
各アカウント名には、セクション6.2.4「アカウント名の指定」で説明されている形式が使用されます。 例:
DROP USER 'jeffrey'@'localhost';
アカウント名のホスト名部分は、省略すると'%'
にデフォルト設定されます。
DROP USER
は、開かれたどのユーザーセッションも自動的には閉じません。 さらに、開かれたセッションを持つユーザーが削除されても、このステートメントはそのユーザーのセッションが閉じられるまで有効になりません。 セッションがクローズされると、ユーザーは削除され、次回のログイン試行は失敗します。 これは意図的なものです。
DROP USER
は、古いユーザーが作成したどのデータベースまたはそれらのデータベース内のどのオブジェクトも自動的には削除したり、無効にしたりしません。 これには、DEFINER
属性に削除されたユーザーが指定されているストアドプログラムまたはビューが含まれます。 このようなオブジェクトにアクセスしようとすると、それが定義者のセキュリティーコンテキストで実行された場合は、エラーが生成される可能性があります。 (セキュリティーコンテキストについては、セクション25.6「ストアドオブジェクトのアクセス制御」を参照してください。)