MySQL 8.4 版本說明
RENAME USER old_user TO new_user
[, old_user TO new_user] ...
RENAME USER
語法會重新命名現有的 MySQL 帳戶。如果舊帳戶不存在或新帳戶已存在,則會發生錯誤。
若要使用 RENAME USER
,您必須擁有全域的 CREATE USER
權限,或是 mysql
系統綱要的 UPDATE
權限。當 read_only
系統變數啟用時,RENAME USER
還需要 CONNECTION_ADMIN
權限 (或已被棄用的 SUPER
權限)。
如果任何要重新命名的帳戶被指定為任何儲存物件的 DEFINER
屬性,RENAME USER
會失敗並產生錯誤。(也就是說,如果重新命名帳戶會導致儲存物件成為孤立的,則語句會失敗。)若要無論如何都執行此操作,您必須擁有 SET_ANY_DEFINER
或 ALLOW_NONEXISTENT_DEFINER
權限;在這種情況下,語句會成功並產生警告,而不是失敗並產生錯誤。如需其他資訊,包括如何識別哪些物件將特定帳戶命名為 DEFINER
屬性,請參閱 孤立的儲存物件。
每個帳戶名稱使用 第 8.2.4 節「指定帳戶名稱」中描述的格式。例如:
RENAME USER 'jeffrey'@'localhost' TO 'jeff'@'127.0.0.1';
帳戶名稱的主機名稱部分,如果省略,則預設為 '%'
。
RENAME USER
會導致舊使用者持有的權限變成新使用者持有的權限。然而,RENAME USER
不會自動刪除或使舊使用者建立的資料庫或其中的物件失效。這包括 DEFINER
屬性命名為舊使用者的儲存程式或檢視。如果這些物件在定義者安全內容中執行,則嘗試存取這些物件可能會產生錯誤。(有關安全內容的資訊,請參閱 第 27.6 節「儲存物件存取控制」。)
權限變更會如 第 8.2.13 節「權限變更生效的時間」中所示生效。