MySQL 9.0 版本注意事項
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 節「使用角色」。