Abilitare la connessione remota ad MySql

mysql

 

Per abilitare l’accesso remoto al vostro database MySql non dovete solo dare i diritti ad un utente (e.g remoteuser) ad un certo indirizzo (xxx.xxx.xxx.xxx)

grant all privileges on *.* to remoteuser@xxx.xxx.xxx.xxx

Dovete anche commentare la seguente riga di codice nel file .my.cnf e riavviare il servizio mysql.

#bind 127.0.0.1
Abilitare la connessione remota ad MySql

Ripristino backup MySql da Fulldump

mysql

Immaginiamo che il nostro db MySql si sia danneggiato per qualche calamità naturale.

Abbiamo ovviamente un nostro bel fulldump del DB fatto precedentemente con un comando simile a questo:

mysqldump --all-databases --routines -ubackup > fulldump.sql

Per un esempio di backup automatizzato leggete il nostro articolo sul backup di MySql.

Simuliamo questa calamità naturale 🙂

Lanciamo

sudo apt-get purge mysql*
sudo rm -rf /etc/mysql/
sudo rm -rf /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

Ops.. disastro disastrissimo! 😀

NOTA: oh, mi raccomando provate tutto in un ambiente di Test… non devo dirvelo vero?

A questo punto reinstalliamo mysql

sudo apt-get install mysql*

e avremo una bella installazione pulita di mysql. Mettiamo come password di root ‘password’.

Quindi proviamo ad enstrare nella nostra nuova istanza di mysql

mysql -u root -p

La password è ovviamente ‘password’.

Ok, usciamo.

Ora lanciamo il nostro ripristino dal fulldump

 mysql -u root -p < fulldump.sql

Ma attenzione! 🙂

Se cerchiamo di entrare in mysql con gli utenti del fulldump non ci riusciamo… calma, è perchè non abbiamo messo l’opzione –-flush-privileges nel comando di mysqldump.

Rientriamo con l’utente root/password e lanciamo un flush privileges

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
l

A questo punto usciamo e rientriamo con i nostri vecchi account e tutti nostri database ripristinati!

Andate a bervi un bell’aperitivo.

Ripristino backup MySql da Fulldump

Backup automatizzato di MySql – versione molto semplificata

mysql

Per prima cosa è bene creare un account predisposto al solo backup in modo da poterlo inserire nel file .my.cnf

GRANT USAGE ON *.* TO backup@localhost IDENTIFIED BY 'UnaB3LlaPasswordSicura';
GRANT SELECT,LOCK TABLES ON *.* to backup@localhost;
FLUSH PRIVILEGES;

Questo account avrà quindi solo i diritti di lettura su tutti gli oggetti di MySql.

A questo punto creiamo anche il file .my.cnf che andrà inserito all’interno della stessa cartella in cui viene eseguito lo script di backup contenente il comando mysqldump.

cat > ~/.my.cnf << EOF
[mysqldump]
user=backup
password=UnaB3LlaPasswordSicura

[client]
user=backup
password=UnaB3LlaPasswordSicura
EOF

chmod 600 .my.cnf

A questo punto uno script molto basilare (potete migliorarlo in molti modi) è il seguente

#!/bin/bash
BACKUP_DIR=~/backup
COMMAND_DIR=~/cron
FILENAME="fulldump$(date +%F-%H%M%S)"
FILEPATH="$BACKUP_DIR/$FILENAME"
SQLFILE="$FILEPATH".sql
TARFILE="$FILEPATH".tar.gz
N=1
LOGFILE="$COMMAND_DIR/dump.log"

echo "$(date +%F-%H:%M:%S)" > "$LOGFILE"

echo  "tar file: $TARFILE" >> "$LOGFILE"
echo  "sql file: $SQLFILE" >> "$LOGFILE"

mysqldump --all-databases --routines --flush-privileges -ubackup > $SQLFILE && tar czf $TARFILE $SQLFILE && rm $SQLFILE

# Rimuovere il commento nella riga seguente dopo aver eseguito lo script 'N' volte che sono il numero di backup file che si vuole tenere.
#find $BACKUP_DIR/ -name "fulldump*.tar.gz" | sort -r | tail -$N | xargs rm -f

ls -al $BACKUP_DIR/fulldump*.tar.gz | wc -l >> "$LOGFILE"

E’ tutto. Ora basta dare i diritti di escuzione allo script e inserirlo nella crontab secondo le vostre preferenze.

Backup automatizzato di MySql – versione molto semplificata