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


6.2.5 ロール名の指定

MySQL のロール名は、権限の名前付きコレクションであるロールを参照します。 ロールの使用例は、セクション6.2.10「ロールの使用」 を参照してください。

ロール名の構文とセマンティクスは、アカウント名と似ています。セクション6.2.4「アカウント名の指定」 を参照してください。 付与テーブルに格納されているように、付与テーブルのスコープカラムのプロパティ で説明されているアカウント名と同じプロパティーを持ちます。

ロール名は、次の点でアカウント名と異なります:

  • ロール名のユーザー部分は空白にできません。 したがって、「匿名ユーザー」の概念に類似した「匿名ロール」はありません。

  • アカウント名の場合、ロール名のホスト部分を省略すると、'%'のホスト部分になります。 ただし、アカウント名の'%'とは異なり、ロール名の'%'のホスト部分にはワイルドカードプロパティはありません。 たとえば、ロール名として使用される名前'me'@'%'の場合、ホスト部分 ('%') はリテラル値であり、「任意のホスト」一致プロパティはありません。

  • ロール名のホスト部分のネットマスク表記に意味はありません。

  • アカウント名は、複数のコンテキストで CURRENT_USER() にすることができます。 ロール名がではありません。

mysql.user システムテーブルの行は、アカウントとロールの両方として機能できます。 この場合、プロパティに一致する特別なユーザー名またはホスト名は、名前がロール名として使用されるコンテキストには適用されません。 たとえば、次のステートメントは、myrole のユーザー部分およびホスト名を持つすべてのロールを使用して現在のセッションロールを設定することを想定して実行できません:

SET ROLE 'myrole'@'%';

かわりに、このステートメントはセッションのアクティブロールを'myrole'@'%'という名前のロールに設定します。

このため、多くの場合、ロール名はユーザー名部分のみを使用して指定され、ホスト名部分は暗黙的に'%'になります。 '%'以外のホスト部分でロールを指定すると、特定のホストからの接続を許可されたユーザーアカウントとしてロールとして機能する名前を作成する場合に役立ちます。


関連キーワード:  ロール, 認証, パスワード, アカウント, 部分, リファレンス, ユーザー, プラガブル, 監査, セキュリティー