Die Sicherung einer Datenbank kann mit dem Befehl mysqldump
erfolgen.
Beim Wiederherstellen müssen neben der Datenbank noch Benutzer und dessen Rechte wiederhergestellt werden.
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;
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.
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;'