Mysql

如何在 Mysql 中更改 VIEW 的 DEFINER?

  • April 11, 2014

當我執行 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';

引用自:https://dba.stackexchange.com/questions/9249