MySQL のロール名は、権限の名前付きコレクションであるロールを参照します。 ロールの使用例は、セクション6.2.10「ロールの使用」 を参照してください。
ロール名の構文とセマンティクスは、アカウント名と似ています。セクション6.2.4「アカウント名の指定」 を参照してください。 付与テーブルに格納されているように、付与テーブルのスコープカラムのプロパティ で説明されているアカウント名と同じプロパティーを持ちます。
ロール名は、次の点でアカウント名と異なります:
ロール名のユーザー部分は空白にできません。 したがって、「「匿名ユーザー」」の概念に類似した「「匿名ロール」」はありません。
アカウント名の場合、ロール名のホスト部分を省略すると、
'%'
のホスト部分になります。 ただし、アカウント名の'%'
とは異なり、ロール名の'%'
のホスト部分にはワイルドカードプロパティはありません。 たとえば、ロール名として使用される名前'me'@'%'
の場合、ホスト部分 ('%'
) はリテラル値であり、「「任意のホスト」」一致プロパティはありません。ロール名のホスト部分のネットマスク表記に意味はありません。
アカウント名は、複数のコンテキストで
CURRENT_USER()
にすることができます。 ロール名がではありません。
mysql.user
システムテーブルの行は、アカウントとロールの両方として機能できます。 この場合、プロパティに一致する特別なユーザー名またはホスト名は、名前がロール名として使用されるコンテキストには適用されません。 たとえば、次のステートメントは、myrole
のユーザー部分およびホスト名を持つすべてのロールを使用して現在のセッションロールを設定することを想定して実行できません:
SET ROLE 'myrole'@'%';
かわりに、このステートメントはセッションのアクティブロールを'myrole'@'%'
という名前のロールに設定します。
このため、多くの場合、ロール名はユーザー名部分のみを使用して指定され、ホスト名部分は暗黙的に'%'
になります。 '%'
以外のホスト部分でロールを指定すると、特定のホストからの接続を許可されたユーザーアカウントとしてロールとして機能する名前を作成する場合に役立ちます。