Mysql und MysqlDump Befehle

Ich habe hier mal eine kleine Übersicht der gängigsten Mysql und Mysqldump Befehle erstellt, da ich diese auch immer wieder brauche.

Datenbank erzeugen und User für diese Datenbank anlegen.

-- DB erstellen
CREATE DATABASE testingdb;

-- User erstellen
CREATE USER 'testingdb_admin'@'localhost' IDENTIFIED BY 'securepassword';

-- dem User alle Rechte für die DB zuweisen
GRANT ALL PRIVILEGES ON myblog . * TO 'testingdb_admin'@'localhost';

-- Rechte neu einlesen
FLUSH PRIVILEGES;

-- Rechte verifizieren
SHOW GRANTS FOR 'testingdb_admin'@'localhost';

Das Passwort vom Mysql User ändern wir in dem wir mit „mysqladmin“ das alte und danach das neue Passwort eingeben.

-- Passwort ändern von User "testingdb_admin"
./mysqladmin -u testingdb_admin -psecurepassword password secure

-- Start Mysql mit dem alten Passwort --> funktioniert nicht
./mysql -u testingdb_admin -psecurepassword testingdb
ERROR 1045 (28000): Access denied for user 'testingdb_admin'@'localhost' (using password: YES)

-- Start Mysql mit dem neuen Passwort --> funktioniert
./mysql -u testingdb_admin -psecure testingdb

Nun erstellen wir mit „mysqldump“ ein Backup unserer Datenbank. Wir benutzen mysqldump dafür und leiten die Ausgabe in eine Datei um.

-- Mysql Dump der gesamten Datenbank mit allen Tabellen erstellen
./mysqldump -u testingdb_admin -p testingdb > testingdb.sql

-- Mysql Dump für Tabelle "router" erstellen
./mysqldump -u testingdb_admin -p testingdb router > testingdb.sql

-- aus Mysql Dump die Datenbank wieder herstellen
./mysqldump -u testingdb_admin -p testingdb < testingdb.sql

Wenn wir ein regelmäßiges Backup unserer DB benötigen, sollten wir uns ein Bash Script schreiben und dieses dann per Cronjob täglich starten. Ich habe mal zwei Versionen meines Shell Scripts aufgezeigt. Ich gehe mal davon aus, das das Shell Script täglich gestartet wird.

Der Befehl in Zeile 5 speichert den Dump mit Tag im Dateinamen (testingdb_dump_08.sql), das bedeutet unser ältestes Backup ist 30 oder 31 Tage alt, je nachdem wieviel Tage der aktuelle Monat hat.

Der Befehl in Zeile 8 speichert den Dump mit Tag und Monat im Dateinamen (testingdb_dump_08_03.sql), das bedeutet unser ältestes Backup ist ein Jahr alt. Am 08.03. des nächsten Jahres wird diese Datei überschrieben.

Der Befehl in Zeile 11 speichert den Dump mit Tag, Monat und Jahr im Dateinamen (testingdb_dump_08_03_2018.sql), das bedeutet wir können auf jeden Tag mit dem Backup zurück springen, da die Dateien nie überschrieben werden.

#!/bin/bash

# Script speichert den mysql dump in Datei "testingdb_dump_08.sql"
/usr/bin/mysqldump -u testingdb_admin -psecure testingdb > /db_backup/testingdb_dump_$(date "+%d").sql

# Script speichert den mysql dump in Datei "testingdb_dump_08_03.sql" 
/usr/bin/mysqldump -u testingdb_admin -psecure testingdb > /db_backup/testingdb_dump_$(date "+%d_%m").sql

# Script speichert den mysql dump in Datei "testingdb_dump_08_03_2018.sql" 
/usr/bin/mysqldump -u testingdb_admin -psecure testingdb > /db_backup/testingdb_dump_$(date "+%d_%m_%Y").sql