文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


15.7.1.5 DROP USER 陳述式

DROP USER [IF EXISTS] user [, user] ...

DROP USER 陳述式會移除一個或多個 MySQL 帳戶及其權限。它會從所有授權資料表中移除該帳戶的權限列。

mandatory_roles 系統變數值中命名的角色無法被刪除。

要使用 DROP USER,您必須擁有全域的 CREATE USER 權限,或是針對 mysql 系統綱要的 DELETE 權限。當 read_only 系統變數啟用時,DROP USER 額外需要 CONNECTION_ADMIN 權限(或是已棄用的 SUPER 權限)。

如果要刪除的任何帳戶被指定為任何儲存物件的 DEFINER 屬性,則 DROP USER 會失敗並產生錯誤。(也就是說,如果刪除帳戶會導致儲存物件成為孤立物件,則該陳述式會失敗。)如果要強制執行此操作,您必須擁有 SET_ANY_DEFINERALLOW_NONEXISTENT_DEFINER 權限;在這種情況下,該陳述式會成功並產生警告,而不是失敗並產生錯誤。如需其他資訊,包括如何識別哪些物件將給定的帳戶命名為 DEFINER 屬性,請參閱孤立的儲存物件

如果所有指定的用戶都成功刪除,DROP USER 才會成功,如果發生任何錯誤,則會回滾且不產生任何影響。預設情況下,如果您嘗試刪除不存在的用戶,則會發生錯誤。如果指定了 IF EXISTS 子句,則該陳述式會為每個不存在的指定用戶產生警告,而不是錯誤。

如果陳述式成功,則會寫入二進位日誌,但如果失敗則不會寫入;在這種情況下,會發生回滾且不會進行任何變更。寫入二進位日誌的陳述式包含所有指定的用戶。如果指定了 IF EXISTS 子句,則甚至會包含不存在且未被刪除的用戶。

每個帳戶名稱都使用第 8.2.4 節「指定帳戶名稱」中描述的格式。例如

DROP USER 'jeffrey'@'localhost';

如果省略帳戶名稱的主機名稱部分,則預設為 '%'

重要提示

DROP USER 不會自動關閉任何開啟的使用者工作階段。相反地,如果刪除具有開啟工作階段的使用者,則該陳述式在該使用者的工作階段關閉之前不會生效。一旦工作階段關閉,使用者就會被刪除,且該使用者下次嘗試登入時會失敗。這是設計使然

DROP USER 不會自動刪除或使舊使用者建立的資料庫或其中的物件失效。這包括 DEFINER 屬性指定了已刪除使用者的儲存程式或檢視表。如果此類物件在 definer 安全性內容中執行,則嘗試存取這些物件可能會產生錯誤。(有關安全性內容的資訊,請參閱第 27.7 節「儲存物件存取控制」。)