MySQL 8.0 リファレンスマニュアル


13.7.1.4 DROP ROLE ステートメント

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「ロールの使用」 を参照してください。


関連キーワード:  ステートメント, CREATE, DROP, TABLE, ロール, ROLE, サブクエリー, FUNCTION, SLAVE, 関数