Instrucciones para hacer un backup de unas BD de MYSQL sin que la contraseña este accesible para todo el mundo, no es lo más seguro pero hasta que averiguo la forma de ponerla encriptada, voy teniendo una copia.
El procedimiento es crear un archivo dentro de la carpeta /root
root@syswoody:~# vi /root/.my.cnf
Dentro tenemos
[client]
user = root
password = password
Salimos y guardamos.
Ahora establecemos permisos para que solo root tenga acceso.
root@syswoody:~#chmod 600 .my.cnf
Ahora tenemos la validacion automatica, ya podemos hacer mysqldump y mysql sin necesidad de poner la password.
El script de copia es el siguiente.
#!/bin/bash
# ========================================
# Script para copias de seguridad en cinta
# ========================================
# — Fecha de la copia.
fecha=`/bin/date +%Y%m%d`
# Log
DirCopia=»/root/backup»
LOG=»$DirCopia/$fecha.log»
SinCopia=»mnt/copia/ALMACEN»
email=»[email protected]»
Dir=»/boot /var /home»
Para copia de MySQL
#* Usuario de MySQL *#
MyUser=»root»
#* PASSWORD del usuario de MySQL *#
MyPass=»PASSWORD»
#* Host de MySQL *#
MyHost=»127.0.0.1″
#* Binarios de MySQL *#
MYSQL=»$(which mysql)»
MYSQLDUMP=»$(which mysqldump)»
GZIP=»$(which gzip)»
rm -rf $DirCopia/*
if [ ! $? -eq 0 ]; then
echo «Error Borrado directorio de copia» >> $LOG
else
echo «Se ha realizado la limpieza de forma correcta» >> $LOG
fi
# EMPEZAMOS
echo «Buenas Noches : Empezamos la copia Dia: » $fecha >> $LOG
hora=`/sbin/clock`
echo » La hora es» $hora >> $LOG
echo » El almacen temporal de la copia es:» $DirCopia >> $LOG
echo » » >> $LOG
echo » Vaciamos el directorio de copias:» $DirCopia >> $LOG
se
echo «# ============================================================= #»
echo «# Comprimir datos con permisos y path en el directorio de copia #»
echo «# ============================================================= #»
echo » Exportamos la BD» # Para esto antes hemos debido de crear el archivo .my.cnf
# Obtener la lista de todas las BBDD
DBS=»$($MYSQL -Bse ‘show databases’)»
# Comenzar volcado de la base de datos una a una
for db in $DBS
do
FILE=$DirCopia/mysql-$db.$fecha.gz
# Comprimir todas los ficheros con gzip.
$MYSQLDUMP -u $MyUser -h $MyHost $db | $GZIP -9 > $FILE
if [ ! $? -eq 0 ]; then
echo «Error Comprimiendo BD» $db >> $LOG
else
echo «Compresion» $db «Ok» >> $LOG
fi
echo «Empezamos los directorios a copiar son: » >> $LOG
echo «Compresion de:» $Dir >> $LOG
for i in $Dir;
do
echo «Acortamos el nombre.» >> $LOG
variable=`echo $i | sed «s/\///g»`
echo $variable >> $LOG
echo «Compresion origen:» $i «Destino» $DirCopia/$variable$fecha.tgz >> $LOG
tar czvf $DirCopia/$variable$fecha.tgz /$i
if [ ! $? -eq 0 ]; then
echo «Error Comprimiendo» $i >> $LOG
else
echo «Compresion» $i «Ok» >> $LOG
fi
done
# ===============
# Enviar por mail
# ===============
echo «Traspasamos el LOG para que se guarde en la copia.» >> $LOG
cat $LOG | mail -s «Copia del dia $fecha» $email
echo «Proceso de copia concluido»