Минимальные GRANT, необходимые mysqldump для сброса полной схемы? (TRIGGER не хватает!!)
У меня есть пользователь 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
Все в порядке с выгруженным файлом, за исключением триггеров , они отсутствуют!!
Триггеры сбрасываются правильно, если я пытаюсь mysqldump с пользователем root MySQL:
mysqldump -u root -p --routines --triggers --quote-names --opt \
--add-drop-database --databases myschema > myschema.sql
Итак, я думаю, это проблема с perms... каковы дополнительные гранты, которые мне нужен MySQL MySQL для выполнения полного дампа правильно?
Ответы
Ответ 1
Предполагая, что полный дамп также означает VIEW
и EVENT
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
, если я хочу только создать дамп без данных?
Ответ 2
Я нашел дополнительный GRANT, который мне нужен!
GRANT TRIGGER ON `myschema`.* TO 'dump'@'%'
Здесь у вас есть ссылка на официальный документ: http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html#priv_trigger
Признак TRIGGER позволяет запускать триггерные операции. У вас должна быть эта привилегия для таблицы для создания, удаления или запуска триггеров для этой таблицы.
Ответ 3
Я обнаружил, что когда-либо, если пользователь VIEW DEFINER не существует, сбрасывает сбой.
Измените его, как описано там