MySQL 9.0 版本資訊
MySQL 角色名稱是指角色,角色是權限的具名集合。如需角色使用範例,請參閱第 8.2.10 節「使用角色」。
角色名稱的語法和語意與帳戶名稱類似;請參閱第 8.2.4 節「指定帳戶名稱」。如同儲存在授權表格中一樣,它們具有與帳戶名稱相同的屬性,如授權表格範圍欄屬性中所述。
角色名稱在以下方面與帳戶名稱不同
角色名稱的使用者部分不能空白。因此,沒有與「匿名使用者」概念類似的「匿名角色」。
對於帳戶名稱,省略角色名稱的主機部分會導致主機部分為
'%'
。但是與帳戶名稱中的'%'
不同,角色名稱中的'%'
主機部分沒有萬用字元屬性。例如,對於用作角色名稱的名稱'me'@'%'
,主機部分 ('%'
) 只是一個字面值;它沒有「任何主機」比對屬性。角色名稱主機部分中的網路遮罩表示法沒有意義。
允許在多個內容中使用帳戶名稱
CURRENT_USER()
。角色名稱則不行。
有可能讓 mysql.user
系統表格中的列同時作為帳戶和角色。在這種情況下,任何特殊的使用者或主機名稱比對屬性都不適用於名稱用作角色名稱的內容。例如,您無法執行以下陳述式並期望它使用使用者部分為 myrole
和任何主機名稱的所有角色來設定目前的工作階段角色
SET ROLE 'myrole'@'%';
相反地,該陳述式會將工作階段的啟用角色設定為具有完全名稱 'myrole'@'%'
的角色。
因此,角色名稱通常只使用使用者名稱部分指定,並讓主機名稱部分隱式為 '%'
。如果您打算建立一個既可用作角色又可用作允許從指定主機連線的使用者帳戶的名稱,則指定具有非 '%'
主機部分的角色可能會很有用。