Tengo un usuario de MySQL llamado dump con los siguientes permisos:
GRANT USAGE ON *.* TO 'dump'@'%' IDENTIFIED BY ...
GRANT SELECT, LOCK TABLES ON `mysql`.* TO 'dump'@'%'
GRANT SELECT, LOCK TABLES ON `myschema`.* TO 'dump'@'%'
Quiero volcar todos los datos (incluidos los activadores y procedimientos) usando el usuario de volcado . Llamo mysqldump de la siguiente manera:
mysqldump -u dump -p --routines --triggers --quote-names --opt \
--add-drop-database --databases myschema > myschema.sql
Todo está bien con el archivo volcado, excepto los disparadores, ¡ faltan !
Los disparadores se descargan correctamente si intento mysqldump con el usuario root de MySQL:
mysqldump -u root -p --routines --triggers --quote-names --opt \
--add-drop-database --databases myschema > myschema.sql
Entonces, supongo que es un problema de permisos ... ¿Cuáles son las subvenciones adicionales que necesita mi usuario de volcado MySQL para realizar el volcado completo correctamente?
LOCK TABLES
en la base de datos que estoy tratando de volcar ... usando5.5.49-MariaDB
--opt
,--lock-tables
,--lock-all-tables
,--single-transaction
y las respectivas--skip-*
variantes.¡Encontré la SUBVENCIÓN adicional que necesitaba!
GRANT TRIGGER ON `myschema`.* TO 'dump'@'%'
Aquí tienes la referencia en el documento oficial: http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html#priv_trigger
fuente
TRIGGER
privilegios para volcar el código de activación.Descubrí que, en algún momento, si el usuario VIEW DEFINER no existe, el volcado falla.
Cámbielo, como se describe allí
fuente
person
lugar deperson@localhost
. ¡Gracias!Además de la respuesta de Jannes , cuando se usa mysqldump con la opción --tab (produce un archivo de texto separado por tabuladores para cada tabla volcada ), su usuario de MySQL también debe tener el
FILE
privilegio:GRANT FILE ON *.* TO 'dump'@'%';
Referencia de documentos oficiales: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_tab
Mencionado en esta sección:
fuente