MySQL 9.0 發行說明
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.7 節「儲存物件存取控制」。)
權限變更會如第 8.2.13 節「權限變更何時生效」中所示生效。