Mysql
如何在 Mysql 中更改 VIEW 的 DEFINER?
當我執行 mysqldump 時,我得到一個錯誤:
mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES
這是有道理的,因為
foobar
它是不再存在的遺留機器。如何將所有表的定義器更改為’root’@’localhost’?
我認為您嘗試轉儲的數據庫包含使用者在以 root@‘foobar’ 身份登錄時定義的過程/方法。
現在的解決方案是您必須替換該程序/方法的定義器
然後您可以生成沒有錯誤的轉儲。
你可以這樣做..
UPDATE `mysql`.`proc` p SET definer = 'root@localhost' WHERE definer='root@foobar'
請小心,因為這將更改所有數據庫的所有定義器。
試試吧….!
2012 年 2 月 9 日更新
正如我看到@gbn 給出的連結,這是@Rolando 給出的答案,也可能是這種情況。請訪問連結
@RolandoMySQLDBA 編輯 2011-12-16 11:20 EDT
雖然有風險,但這個答案很好。澄清一下:您可以像這樣在查詢中指定數據庫:
UPDATE `mysql`.`proc` p SET definer = 'root@localhost' WHERE definer='root@foobar' AND db='whateverdbyouwant';