我有一个名为 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用户正确执行完整转储所需 的 额外补助 是什么? __
假设完全转储还意味着VIEWs和EVENTs,则需要:
VIEW
EVENT
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。
EXECUTE
我自己的问题是:SELECT如果只想进行无数据转储,为什么需要?
SELECT