Archive for the 'MySQL' Category

MySQL Restaurar una sola tabla de un dump completo

Después de hacer un backup completo de todas las bases de datos de MySQL, un cliente me pidió la restauración de una sola tabla.
Vaya… y como saco yo una sola tabla dentro de un dump de varios gigas ?
Me puse a investigar y lo he logrado con el comando sed.
Con sed genero un dump nuevo solo con la tabla que quiero restaurar. La tabla la quiero restaurar no la quiero sobreescribir, por lo que copiare los datos en una tabla temporal.
Suponiendo que el backup está en mysqldump.sql y queremos generar el nuevo dump en /tmp/tabla.sql, podríamos hacerlo de la siguiente manera:
echo "USE \`NOMBRE_BD\`;" > /tmp/tabla.sql;sed -n '/^USE `'NOMBRE_BD'`/,/^USE/p' mysqldump.sql |sed -n '/-- Table structure for table `'NOMBRE_TABLA'`/,/UNLOCK TABLES/p'|sed s/NOMBRE_TABLA/NOMBRE_TABLABCCK/g >> $FILE
Al primer sed le indicamos que nos muestre lo que hay entre las lineas que empiecen por “USE `NOMBRE_BD`” y “USE“, que será la siguiente base de datos. Esto lo hacemos así ya que distintas bases podrían tener el mismo nombre para una tabla. Con la primera selección ya tenemos todo el dump de la base de datos donde se encuentra nuestra tabla. Con el siguiente sed seleccionamos las sentencias relacionadas con esa tabla, y con el último sed, le decimos que nos cambie ese nombre de tabla por otro, para no sobreescribir la original. El echo del principio, es para indicar la base de datos que tiene que usar en la restauración.

MySQL Backup y Restauración

Pequeña receta para hacer un backup total de las bases de datos de MySQL:

mysqldump -uroot -p --all-databases > /var/tmp/mysqldump.`date +%Y%m%d`.sql

Si solo se quiere salvar los datos de una:

mysqldump -uroot -pPASSWORD NOMBRE_BD > /var/tmp/NOMBRE_BD.`date +%Y%m%d`.sql

Restauramos las bases del MySQL:

mysql -u root -p < /var/tmp/mysqldump.FECHA.sql

Restauramos una base del MySQL:

mysql -u root -p NOMBRE_BD < /var/tmp/NOMBRE_BD.FECHA.sql

bookmark bookmark bookmark bookmark

MySQL Borrar usuario

Receta para borrar un usuario con acceso total a una base de datos en MySQL:

revoke all on BASE_DATOS.* from USUARIO@localhost;
drop user USUARIO@localhost;

BASE_DATOS: Base de datos donde tenía el acceso.
USUARIO: Nombre del usuario que se quiere borrar.

bookmark bookmark bookmark bookmark

MySQL Crear usuario

Receta para crear un usuario con acceso total a una base de datos en MySQL:

GRANT all ON BASE_DATOS.* TO USUARIO@localhost IDENTIFIED BY 'CLAVE';

BASE_DATOS: Base de datos a la que vamos a dar acceso total.
USUARIO: Nombre del usuario que se le quiere dar el acceso total.
localhost: En caso de que se vaya a conectar desde la propia máquina, sino la ip.
CLAVE: Clave del usuario.

bookmark bookmark bookmark bookmark