文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
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 屬性命名為已刪除使用者的儲存程式或檢視。如果此類物件在定義者安全環境中執行,則嘗試存取此類物件可能會產生錯誤。(如需關於安全環境的資訊,請參閱第 27.6 節,「儲存物件存取控制」。)