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


13.7.1.9 SET DEFAULT ROLE ステートメント

SET DEFAULT ROLE
    {NONE | ALL | role [, role ] ...}
    TO user [, user ] ...

このステートメントは、TO キーワードの直後に指定された user ごとに、ユーザーがサーバーに接続して認証したとき、またはユーザーがセッション中に SET ROLE DEFAULT ステートメントを実行したときにアクティブになる役割を定義します。

SET DEFAULT ROLE は、ALTER USER ... DEFAULT ROLE の代替構文です (セクション13.7.1.1「ALTER USER ステートメント」 を参照)。 ただし、ALTER USER では単一のユーザーに対してのみデフォルトを設定できますが、SET DEFAULT ROLE では複数のユーザーに対してデフォルトを設定できます。 一方、ALTER USER ステートメントのユーザー名として CURRENT_USER を指定できますが、SET DEFAULT ROLE のユーザー名は指定できません。

SET DEFAULT ROLE には、次の権限が必要です:

  • 別のユーザーのデフォルトロールを設定するには、mysql.default_roles システムテーブルに対するグローバル CREATE USER 権限または UPDATE 権限が必要です。

  • 自分のデフォルトロールを設定する場合、デフォルトとして必要なロールが付与されているかぎり、特別な権限は必要ありません。

各ロール名は、セクション6.2.5「ロール名の指定」 で説明されている形式を使用します。 例:

SET DEFAULT ROLE administrator, developer TO 'joe'@'10.0.0.1';

ロール名のホスト名部分は、省略すると'%'にデフォルト設定されます。

DEFAULT ROLE キーワードに続く句では、次の値が許可されます:

  • NONE: デフォルトを NONE (ロールなし) に設定します。

  • ALL: アカウントに付与されているすべてのロールにデフォルトを設定します。

  • role [, role ] ...: デフォルトを名前付きロールに設定します。このロールは、SET DEFAULT ROLE の実行時に存在し、アカウントに付与される必要があります。

注記

SET DEFAULT ROLESET ROLE DEFAULT は異なるステートメントです:

  • SET DEFAULT ROLE では、アカウントセッション内でデフォルトでアクティブ化するアカウントロールを定義します。

  • SET ROLE DEFAULT は、現在のセッション内のアクティブロールを現在のアカウントのデフォルトロールに設定します。

ロールの使用例は、セクション6.2.10「ロールの使用」 を参照してください。


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