一尘不染

如何在 Mysql 中更改 VIEW 的 DEFINER?

mysql

当我运行 mysqldump 时,我得到一个错误:

mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES

这是有道理的,因为foobar它是不再存在的遗留机器。

如何将所有表的定义器更改为’root’@’localhost’?


阅读 89

收藏
2022-10-10

共1个答案

一尘不染

我认为您尝试转储的数据库包含用户在以 root@’foobar’ 身份登录时定义的过程/方法。

现在的解决方案是您必须替换该程序/方法的定义器

然后您可以生成没有错误的转储。

你可以这样做..

 UPDATE `mysql`.`proc` p SET definer = 'root@localhost' WHERE definer='root@foobar'

请小心,因为这将更改所有数据库的所有定义器。

试试看....!

@RolandoMySQLDBA 编辑 2011-12-16 11:20 EDT

虽然有风险,但这个答案很好。澄清一下:您可以像这样在查询中指定数据库:

 UPDATE `mysql`.`proc` p SET definer = 'root@localhost' WHERE definer='root@foobar' AND db='whateverdbyouwant';
2022-10-10