2011-12-28 13 views
60

Tengo un usuario MySQL llama volcado con las siguientes permanentes:¿GRANTs mínimos necesarios para mysqldump para volcar un esquema completo? (Disparadores faltan !!)

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 (disparadores y procedimientos incluidos) utilizando el volcado usuario. Me 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 descargado a excepción de los desencadenantes, que se están perdiendo !!

Los disparadores se vierten correctamente si trato con mysqldump raíz usuario MySQL:

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

lo tanto, creo que es un tema permanentes ... ¿Cuáles son las subvenciones adicionales mi volcado de MySQL el usuario necesita hacer el volcado completo correctamente?

Respuesta

83

Suponiendo por completo volcado también se refiere a los VIEW s y los EVENT s, lo que se necesita:

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'@'%'; 

y si tiene VIEW s que ejecutan una función, entonces lamentablemente también necesita EXECUTE.

Mi problema es: ¿por qué necesito SELECT si solo quiero hacer un volcado sin datos?

+1

Para 5.5 y superior, en realidad no necesita privilegio TRIGGER para volcar el código de activación. – bluecollarcoder

+1

Estoy usando 5.5 y necesitaba el privilegio TRIGGER para volcar el código de activación. – heuri

+0

En mi caso, parece que también necesito 'LOCK TABLES' en la base de datos que estoy tratando de volcar ... usando' 5.5.49-MariaDB' – 0xC0000022L

7

¡He encontrado la OTORGACIÓ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

El privilegio TRIGGER permite que las operaciones de disparo. Debe tener este privilegio para que una tabla cree, suelte o ejecute desencadenantes para esa tabla.

+3

El nombre es en realidad TRIGGER, no DESENCADENANTES – thenickdude

+0

A pesar de que esto puede una respuesta al problema de autor, no responder a la pregunta: "¿Cuáles son los requisitos mínimos de subvención para hacer una volcado completo ". Para uno: EVENT y SHOW VIEW faltan. – Jannes

+0

Para 5.5 y superior, en realidad no necesita el privilegio 'TRIGGER' para volcar el código de activación. – bluecollarcoder

1

Encontré, que alguna vez si el usuario de VIEW DEFINER no existe, el volcado falla.

cambiarlo, tal como se describe there

+0

No estoy seguro de por qué esto fue votado, resolvió mi problema. Especifiqué el definidor como 'persona' en lugar de' persona @ localhost'. ¡Gracias! – stianlik

Cuestiones relacionadas