MySQL 8.4 發行說明
DROP ROLE [IF EXISTS] role [, role ] ...
DROP ROLE
會移除一個或多個角色(具名的權限集合)。若要使用此陳述式,您必須擁有全域的 DROP ROLE
或 CREATE USER
權限。當啟用 read_only
系統變數時,DROP ROLE
還需要 CONNECTION_ADMIN
權限(或已棄用的 SUPER
權限)。
擁有 CREATE USER
權限的使用者可以使用此語句來刪除已鎖定或未鎖定的帳戶。擁有 DROP ROLE
權限的使用者只能使用此語句來刪除已鎖定的帳戶(未鎖定的帳戶通常是使用者用來登入伺服器的帳戶,而不僅僅是角色)。
在 mandatory_roles
系統變數值中指定的角色名稱不能被刪除。
DROP ROLE
要嘛對所有指定的角色成功執行,要嘛在發生任何錯誤時回滾且沒有任何影響。預設情況下,如果您嘗試刪除不存在的角色,則會發生錯誤。如果給定了 IF EXISTS
子句,則該語句會針對每個不存在的指定角色產生警告,而不是錯誤。
如果語句成功,則會寫入二進制日誌,但如果失敗則不會;在這種情況下,會發生回滾且不會進行任何更改。寫入二進制日誌的語句包括所有指定的角色。如果給定了 IF EXISTS
子句,這甚至包括不存在且未被刪除的角色。
每個角色名稱都使用 第 8.2.5 節「指定角色名稱」中描述的格式。例如:
DROP ROLE 'admin', 'developer';
DROP ROLE 'webapp'@'localhost';
角色名稱的主機名稱部分如果省略,則預設為 '%'
。
已刪除的角色會自動從任何已授予該角色的使用者帳戶(或角色)中撤銷。在任何此類帳戶的目前會話中,其調整後的權限將從執行的下一個語句開始生效。
有關角色使用範例,請參閱 第 8.2.10 節「使用角色」。