文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式 Letter) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  指定角色名稱

8.2.5 指定角色名稱

MySQL 角色名稱是指角色,這些角色是具名的權限集合。如需角色使用範例,請參閱第 8.2.10 節,「使用角色」

角色名稱具有與帳戶名稱類似的語法和語意;請參閱第 8.2.4 節,「指定帳戶名稱」。如授權表中儲存的角色名稱,它們具有與帳戶名稱相同的屬性,這些屬性在授權表範圍資料行屬性中描述。

角色名稱在以下方面與帳戶名稱不同

  • 角色名稱的使用者部分不能為空白。因此,沒有類似於「匿名使用者」概念的「匿名角色」。

  • 至於帳戶名稱,省略角色名稱的主機部分會導致主機部分為 '%'。但與帳戶名稱中的 '%' 不同,角色名稱中的 '%' 主機部分沒有萬用字元屬性。例如,對於用作角色名稱的名稱 'me'@'%',主機部分 ('%') 僅是一個文字值;它沒有「任何主機」的相符屬性。

  • 角色名稱主機部分中的網路遮罩表示法沒有意義。

  • 在多個情況下,允許帳戶名稱為CURRENT_USER()。角色名稱則否。

系統表 mysql.user 中的一列可以同時作為帳戶和角色。在此情況下,當名稱用作角色名稱時,任何特殊使用者或主機名稱比對屬性都不適用。例如,您無法執行以下陳述式,並期望它使用使用者部分為 myrole 和任何主機名稱的所有角色來設定目前工作階段角色

SET ROLE 'myrole'@'%';

相反地,此陳述式會將工作階段的啟用角色設定為名稱精確為 'myrole'@'%' 的角色。

因此,角色名稱通常只指定使用者名稱部分,並讓主機名稱部分隱含為 '%'。如果您的目的是建立一個既可作為角色,又可作為允許從指定主機連線的使用者帳戶的名稱,則指定具有非 '%' 主機部分的角色可能很有用。