Inhaltsverzeichnis

Backup und Restore

Die Sicherung einer Datenbank kann mit dem Befehl mysqldump erfolgen.
Beim Wiederherstellen müssen neben der Datenbank noch Benutzer und dessen Rechte wiederhergestellt werden.

Backup-Benutzer erstellen

Zum Sichern der DBs sollte ein Benutzer verwendet werden, welcher die DBs nur lesen kann.

CREATE USER '<USERNAME>'@'localhost' IDENTIFIED BY '<PASSWORD>';
GRANT SELECT, SHOW VIEW, LOCK TABLES, RELOAD, PROCESS, TRIGGER, EXECUTE, REPLICATION CLIENT, EVENT ON *.* TO '<USERNAME>'@'localhost';
FLUSH PRIVILEGES;

Backup

Ein einfaches Backup einer Datenbanken kann wie folgt erstellt werden:

mysqldump -u<USERNAME> -p<PASSWORD> > <DB_NAME>.sql

für eine Bestimmte Datenbank einfach den Schalter -B <DATENBANKNAME> hinzufügen.

Restore

Hier ein einfaches Script zum wiederherstellen der Datenbank und des entsprechenden Benutzers und aller Rechte für die wiederhergestellte Datenbank.
Es wird davon ausgegangen, dass sich der Dump im Verzeichnis /tmp befindet. Den Pfad bei Bedarf einfach ändern.

#!/bin/bash
SRCDIR="/tmp"
read -p "Datenbankname? " DB_NAME
read -p "Benutzername? " USER_NAME
read -p "Passwort? " USER_PWD
read -p "Hostname? " HOST_NAME
 
echo "Erstelle Datenbank."
mysql -uroot -p -e "create database ${DB_NAME};"
echo
echo "Stelle Sicherung für ${DB_NAME} wieder her."
mysql -uroot -p -B ${DB_NAME} < ${SRCDIR}/${DB_NAME}.sql
echo
echo "Erstelle Benutzer ${USER_NAME}."
mysql -uroot -p -e "create user '${USER_NAME}'@'${HOST_NAME}' identified by '${USER_PWD}';"
echo
echo "Setze Rechte für Datenbank ${DB_NAME} für Benutzer ${USER_NAME}."
mysql -uroot -p -e "grant all privileges on ${DB_NAME}.* to '${USER_NAME}'@'${HOST_NAME}';"
echo
echo "Mache Benutzerrechte bekannt."
mysql -uroot -p -e 'flush privileges;'