一尘不染

mysqldump转储完整模式所需的最低授权量?(触发器不见了!)

mysql

我有一个名为 dump 的MySQL用户,具有以下权限:

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

转储的文件一切正常,除了 触发器,它们丢失了

触发器是正确的倾倒,如果我试图用mysqldump的 MySQL用户:

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

因此,我想这是一个烫发问题… 我的 转储 MySQL用户正确执行完整转储所需额外补助 是什么? __


阅读 277

收藏
2020-05-17

共1个答案

一尘不染

假设完全转储还意味着VIEWs和EVENTs,则需要:

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如果只想进行无数据转储,为什么需要?

2020-05-17