У меня есть пользователь MySQL с именем dump со следующими разрешениями:
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
Итак, я предполагаю, что это проблема с перманентом ... какие дополнительные права нужны моему пользователю дампа MySQL для правильного выполнения полного дампа?
LOCK TABLES
база данных, которую я пытаюсь сбросить ... используя5.5.49-MariaDB
--opt
,--lock-tables
,--lock-all-tables
,--single-transaction
и соответствующие--skip-*
варианты.Я нашел дополнительный ГРАНТ, в котором я нуждался !!
GRANT TRIGGER ON `myschema`.* TO 'dump'@'%'
Здесь у вас есть ссылка на официальный документ: http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html#priv_trigger
источник
TRIGGER
версии 5.5 и выше вам фактически не нужны права для сброса кода триггера.Я обнаружил, что иногда, если пользователь VIEW DEFINER не существует, дамп не выполняется.
Измените его, как описано там
источник
person
вместоperson@localhost
. Благодаря!В дополнении к Jannes ответа, при использовании туздЫшпра с --tab опцией (производит табуляцию текстового файл для каждой сбрасывала таблицу), ваш MySQL пользователь должен быть предоставлена на
FILE
привилегии , а также:GRANT FILE ON *.* TO 'dump'@'%';
Официальная ссылка на документы: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_tab
В этом разделе упоминается:
источник