Script para Exportar usuarios e permissoes MySQL

<?php
// Exporta usuarios e permissoes MySQL

$host = 'localhost';
$user = 'root';
$pass = 'toor';

header('Content-type: text/plain; Charset=UTF-8');
$export = array();
$link = new mysqli($host, $user, $pass, 'mysql', 3306);

if ($link->connect_error) {
printf('Connect failed (%s): %s', $link->connect_errno, $link->connect_error);
die();
}

$link->query('SET NAMES \'utf8\'');
$result = $link->query('SELECT `User`, `Host`, `Password` FROM `user`');

if ($result) {
while ($row = $result->fetch_row()) {
$user = $row[0];
$host = $row[1];
$pass = $row[2];

$export[] = 'CREATE USER `'. $user .'`@`'. $host .'` IDENTIFIED BY \''. $pass .'\'';

// Fetch any permissions found in database
$result2 = $link->query('SHOW GRANTS FOR `'. $user .'`@`'. $host .'`');

if ($result2) {
while ($row2 = $result2->fetch_row()) {
$export[] = $row2[0];
} // while ($row2...
} // if ($result2)...
} // while ($row...
}

$link->close();
echo implode(";\n", $export);
?>

 

Script Importação MySQL

#!/bin/bash
# Script importacao MySQL

MYSQL_USER='root'
MYSQL_PASSWD='MysqlPasswordHere'
DIR_LOCAL_BACKUP_SQL=/tmp/backup_mysql

echo -e "\n[ $( date '+%d/%m/%Y %H:%M' ) ] INICIO EXECUCAO SCRIPT DE IMPORTACAO " | tee -a /var/log/$( basename $0 ).log

for i in $( ls $DIR_LOCAL_BACKUP_SQL/*.sql ); do

# Ex de nome de arquivo: intranet-2017-03-15-diario.sql
  DB=$( basename $( echo $i | awk -F- '{print $1}') )

  if [ $DB != 'mysql' ] && [ $DB != 'information_schema' ] && [ $DB != 'performance_schema' ]; then

    echo "inicio importacao $DB [ $( date '+%d/%m/%Y %H:%M' ) ]" | tee -a /var/log/$( basename $0 ).log
    mysql -u $MYSQL_USER -p$MYSQL_PASSWD -e "DROP DATABASE $DB"
    mysql -u $MYSQL_USER -p$MYSQL_PASSWD < $i
    echo "fim importacao $DB [ $( date '+%d/%m/%Y %H:%M' ) ]" | tee -a /var/log/$( basename $0 ).log
  fi

done

echo "[ $( date '+%d/%m/%Y %H:%M' ) ] FIM EXECUCAO SCRIPT DE IMPORTACAO " | tee -a /var/log/$( basename $0 ).log

Script Backup MySQL

#!/bin/bash
# Script de Backup MySQL

DIR_BACKUP='/backup_sql'
MYSQL_USER='root'
MYSQL_PASSWD='toor'

DATABASES=$( mysql -u $MYSQL_USER -p$MYSQL_PASSWD -e 'SHOW DATABASES' | tr -d '' | grep -v Database )

DATA=$( date +%F )

for i in ${DATABASES[*]}; do
  if [ $( date +%d ) == 01 ]; then
    echo "[ $DATA ] Backup Mensal e Diario - Database: ( $i )"
    mysqldump -u $MYSQL_USER -p$MYSQL_PASSWD --databases $i --single-transaction > $DIR_BACKUP'/mensal/'$i-$DATA'-mensal.sql'
    cp $DIR_BACKUP'/mensal/'$i-$DATA'-mensal.sql' '/backup_sql/diario/'$i-$DATA'-diario.sql'
  elif [ $( date +%u ) == 7 ]; then
    echo "[ $DATA ] Backup Semanal e Diario - Database: ( $i )"
    mysqldump -u $MYSQL_USER -p$MYSQL_PASSWD --databases $i --single-transaction > $DIR_BACKUP'/semanal/'$i-$DATA'-semanal.sql'
    cp $DIR_BACKUP'/semanal/'$i-$DATA'-semanal.sql' '/backup_sql/diario/'$i-$DATA'-diario.sql'
  else
    echo "[ $DATA ] Backup Diario - Database: ( $i )"
    mysqldump -u $MYSQL_USER -p$MYSQL_PASSWD --databases $i --single-transaction > $DIR_BACKUP'/diario/'$i-$DATA'-diario.sql'
  fi
done

# Rotacao dos arquivos de backup
find $DIR_BACKUP/diario/* -mtime +6 -delete
find $DIR_BACKUP/semanal/* -mtime +28 -delete
find $DIR_BACKUP/mensal/* -mtime +31 -delete

Backup MySQL

Exporta database com dados ( usa –single-transaction por default )

mysqldump -u root -p --databases dbSite > file.sql

Exporta somente estrutura da database sem dados ( atributo -d )

mysqldump -u root -p -d --databases dbSite > file.sql

Exporta registros de uma tabela em um único INSERT ( importação mais rápida )

mysqldump -u root -p dbSite tableUsers --single-transaction > /tmp/file.sql

Exporta registros de uma tabela com um INSERT por registro ( importação mais lenta )

mysqldump -u root -p dbSite tableUsers --skip-extended-insert > /tmp/file.sql

Backup por E-mail com Shell Script

1 – Instale o ssmtp e o mutt

apt-get install ssmtp mutt

2 – Configure o ssmtp

vi /etc/ssmtp/ssmtp.conf

hostname=localhost
rewriteDomain=<strong>gmail.com</strong>
AuthUser=<strong>meuemail@gmail.com</strong>
AuthPass=<strong>minhasenha</strong>
AuthMetod=plain
FromLineOverride=NO
Mailhub=<strong>smtp.gmail.com:465</strong>
UseTLS=YES

3 – Crie o arquivo que conterá o corpo de email:

echo "a b c" > corpo_email

4 – Enviando email com anexo utilizando o mutt

mutt -s "Assunto" -i corpo_email -a /etc/iptables.regras -c lancelot@gmail.com < /dev/null

Exemplo de Script

#!/bin/bash
# Envia anexo para conta no gmail

MAILTO=lancelot@gmail.com
SUBJECT='[ BACKUP SERVIDOR ]'
ATTACH=/tmp/home_user_dev_srv.tar.bz2

# Apaga arquivo gerado pelo mutt antes de gerar backup 
rm -f $HOME/sent

# Gera backup
tar -cjvf $ATTACH /home/user

# ENVIA E-MAIL
mutt -s "$SUBJECT" -a $ATTACH -c $MAILTO < /dev/null

# Apaga arquivo gerado pelo mutt depois de enviar e-mail 
rm -f $HOME/sent