2009-02-28 12 views

Respuesta

14

Hasta ahora mi experiencia con MySQL no vi nada de usuario de copia de seguridad y sus privilegios a través de una línea de comandos.

pero puedo copia de seguridad de los datos críticos de la copia de seguridad de MySQL

mysqldump -u root -p mysql > mysql.sql 
+0

¿cómo debería restablecerse? ¿es solo ejecutando el archivo resultante en el information_schema? –

6

Los usuarios y permisos se almacenan en el 'mysql' llamado databased. Puede usar mysqldump para hacer una copia de seguridad de las tablas en la base de datos llamada 'mysql'.

+6

¿Puedes agregar cómo restaurarlos? – Dementic

+0

@Dementic Consulte http://stackoverflow.com/a/12634618/2310830 – RiggsFolly

34
mysql -BNe "select concat('\'',user,'\'@\'',host,'\'') from mysql.user where user != 'root'" | \ 
while read uh; do mysql -BNe "show grants for $uh" | sed 's/$/;/; s/\\\\/\\/g'; done > grants.sql 
+1

Lifesaver, esto! – Volomike

19

Puede base de datos de copia de seguridad de MySQL usando

mysqldump -u root -p mysql > mysql.sql 

y restaurar la base de datos MySQL mediante la ejecución de

mysql -uroot -p mysql < mysql.sql 

No se olvide de

FLUSH PRIVILEGES

después de restaurar el volcado.

creo que sirve ...

+0

Gracias! Después del comando 'FLUSH PRIVILEGES', todo comenzó a funcionar – Dzamir

+0

Esta es la mejor respuesta porque incluye el comando flush privileges. Otra alternativa es reiniciar el proceso del servidor en lugar de descargar privilegios. – Ligemer

+3

Esto solo está garantizado para funcionar si se restaura a la misma versión de MySQL, la base de datos 'mysql' puede diferir entre versiones y contiene muchas más cosas que solo usuarios/privilegios. Si su intención es migrar sus usuarios y privilegios a otro servidor, la respuesta de @spirit anterior es el camino a seguir. – kostas

0

probablemente bastante obvio para los buques de comandos de MySQL, pero la respuesta del espíritu por encima tuvo que añadir ppassword -u root después de que ambos comandos mysql

mysql -u root -p -BNe "select concat ('\' ', usuario,' \ '@ \' ', host,' \ '') de mysql.user donde user! = 'Root'" | mientras lees uh; do mysql -u root -ppassword -BNe "show grants for $ uh" | sed 's/$ /; /; s/\\/\/g '; done> grants.sql;

Cuestiones relacionadas