Ciertamente, debe haber muchos posts respecto a este asunto en otros blogs, foros o el foro oficial de MySQL, sin embargo en mi búsqueda no encontré una solución inmediata al problema.
Bien, pues como dice el título era necesario realizar una migración de las bases de datos de un servidor a otro. Bien, ciertamente había hecho volcados (dumps) de bases de datos para reinsertarlas en otro servidor. Hasta ahí todo bien. La pregunta es… ¿Y cómo copio los usuarios? Y es que una vez que lograra copiar todas las bases de datos, tendría que recrear a mano cada uno de los usuarios, lo cual no parece ser una buena solución.
Bueno, la herramienta típicamente utilizada para efectuar estas tareas es mysqldump
Y para copiar una base de datos a un archivo de texto, tenemos esto
mysqldump -u usuariodb -p basededatosacopiar > volcado.sql
Leyendo un poco la documentación, sabemos dos cosas para solucionar el problema con los usuarios:
- Los privilegios y usuarios/passwords se guardan en la base de datos de nombre mysql.
- El comando mysqldump provee una opción para dumpear todas las bases de datos llamada –all-databases
Así que me animé a hacer mis pruebas:
mysqldump -u root -p --all-databases > dump.sql
SCP al otro servidor, y ahi dentro…
mysql -u root -p < dump.sql
Termina la copia, salgo, entro en un shell MySQL, todo bien… Ok, reiniciemos el servidor MySQL:
service mysql restart
update user set password=PASSWORD("passdedebiansysmaint") where User='debian-sys-maint';
flush privileges;
service mysql restart
Espero les sirva =)