mysqldump转储完整模式所需的最小GRANT? (TRIGGER失踪!!)

我有一个叫做dump的MySQL用户,下面是perms:

GRANT USAGE ON *.* TO 'dump'@'%' IDENTIFIED BY ... GRANT SELECT, LOCK TABLES ON `mysql`.* TO 'dump'@'%' GRANT SELECT, LOCK TABLES ON `myschema`.* TO 'dump'@'%' 

我想转储所有数据(包括触发器和程序)使用转储用户。 我以下面的方式调用mysqldump:

 mysqldump -u dump -p --routines --triggers --quote-names --opt \ --add-drop-database --databases myschema > myschema.sql 

除了触发器,一切都可以用转储的文件,它们是错过的

如果我使用root用户的MySQL用户尝试mysqldump,那么触发器就会被正确地转储:

 mysqldump -u root -p --routines --triggers --quote-names --opt \ --add-drop-database --databases myschema > myschema.sql 

所以,我想这是一个烫发问题… 我的转储 MySQL用户需要做的全面转储正确额外拨款是什么?

假设完全转储你也意味着VIEWEVENT s,你将需要:

 GRANT USAGE ON *.* TO 'dump'@'%' IDENTIFIED BY ...; GRANT SELECT, LOCK TABLES ON `mysql`.* TO 'dump'@'%'; GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `myschema`.* TO 'dump'@'%'; 

如果你有执行一个函数的VIEW ,那么不幸的是你也需要EXECUTE

我自己的问题是:为什么我需要SELECT如果我只想做一个无数据转储?

我find了额外的GRANT我需要!

  GRANT TRIGGER ON `myschema`.* TO 'dump'@'%' 

在这里你可以参考官方的文档: http : //dev.mysql.com/doc/refman/5.5/en/privileges-provided.html#priv_trigger

TRIGGER权限启用触发操作。 您必须拥有此表的特权才能创build,删除或执行该表的触发器。

我发现,有时如果VIEW DEFINER用户不存在,转储将失败。

改变它, 如上所述