DROP ROLE [IF EXISTS] role [, role ] ...
DROP ROLE
により、1 つ以上のロール (権限の名前付きコレクション) が削除されます。 このステートメントを使用するには、グローバル DROP ROLE
または CREATE USER
権限が必要です。 read_only
システム変数が有効になっている場合、DROP ROLE
にはさらに CONNECTION_ADMIN
権限 (または非推奨の SUPER
権限) が必要です。
MySQL 8.0.16 では、CREATE USER
権限を持つユーザーはこのステートメントを使用して、ロックまたはロック解除されたアカウントを削除できます。 DROP ROLE
権限を持つユーザーは、このステートメントを使用して、ロックされているアカウントのみを削除できます (ロック解除されたアカウントは、ロールとしてではなく、サーバーへのログインに使用される可能性が高いユーザーアカウントです)。
mandatory_roles
システム変数値で指定されたロールは削除できません。
DROP ROLE
は、すべての名前付きロールに対して成功するか、ロールバックされ、エラーが発生しても効果はありません。 デフォルトでは、存在しないロールを削除しようとすると、エラーが発生します。 IF EXISTS
句を指定すると、ステートメントは、存在しない名前付きロールごとにエラーではなく警告を生成します。
ステートメントが成功した場合はバイナリログに書き込まれますが、失敗した場合は書き込まれず、ロールバックが発生して変更は行われません。 バイナリログに書き込まれるステートメントには、すべての名前付き役割が含まれます。 IF EXISTS
句が指定されている場合は、存在せず、削除されなかったロールも含まれます。
各ロール名は、セクション6.2.5「ロール名の指定」 で説明されている形式を使用します。 例:
DROP ROLE 'administrator', 'developer';
DROP ROLE 'webapp'@'localhost';
ロール名のホスト名部分は、省略すると'%'
にデフォルト設定されます。
削除されたロールは、そのロールが付与されたユーザーアカウント (またはロール) から自動的に取り消されます。 このようなアカウントの現在のセッション内では、調整された権限は、次に実行されるステートメントから適用されます。
ロールの使用例は、セクション6.2.10「ロールの使用」 を参照してください。