🎯 Ziel #
Automatisches und sicheres Backup aller MySQL-Datenbanken mittels Shell-Skript – ohne Klartext-Passwort im Skript.
1️⃣ MySQL Zugangsdaten sicher speichern #
1.1 Datei anlegen #
nano ~/.my.cnf
1.2 Zugangsdaten eintragen #
[client]
user=root
password=DEIN_PASSWORT
⚠️ Hinweise:
[client]darf nicht verändert werden- Keine Anführungszeichen verwenden
- Datei im Home-Verzeichnis des Users speichern (z. B.
/root/.my.cnf)
1.3 Rechte setzen (wichtig!) #
chmod 600 ~/.my.cnf
Überprüfung:
ls -l ~/.my.cnf
Erwartet:
-rw-------
1.4 Funktion testen #
mysql -e "SHOW DATABASES;"
✅ Keine Passwortabfrage = korrekt eingerichtet
2️⃣ Backup-Skript erstellen #
2.1 Skript anlegen #
nano /root/scripts/backup.sh
2.2 Inhalt einfügen #
#!/bin/bash
DATE=$(date +%F_%H-%M)
BACKUP_DIR="/mnt/Backup"
FILE="$BACKUP_DIR/${DATE}-alldb.sql.gz"
mkdir -p "$BACKUP_DIR"
if mysqldump --all-databases | gzip > "$FILE"; then
echo "Backup erfolgreich: $FILE"
else
echo "Backup fehlgeschlagen!"
exit 1
fi
2.3 Skript ausführbar machen #
chmod 700 /root/scripts/backup.sh
3️⃣ Backup testen #
/root/scripts/backup.sh
Überprüfung:
ls /mnt/Backup
Beispiel:
2026-04-14_22-00-alldb.sql.gz
4️⃣ Automatisches Backup per Cron #
4.1 Crontab öffnen #
crontab -e
4.2 Job hinzufügen (täglich um 2 Uhr) #
0 2 * * * /root/scripts/backup.sh
4.3 Cron prüfen #
crontab -l
5️⃣ Alte Backups automatisch löschen #
(Optional, empfohlen)
find /mnt/Backup -name "*.sql.gz" -mtime +14 -delete
➡️ löscht Backups älter als 14 Tage
Integration ins Skript möglich:
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +14 -delete
🔒 Sicherheitshinweise #
- Niemals Passwörter im Skript speichern
.my.cnfmuss Rechte600haben- Skript nur für root zugänglich machen (
chmod 700) - Backup-Verzeichnis regelmäßig prüfen
🧯 Wiederherstellung (Restore) #
Einzelne Datei einspielen: #
gunzip < backup.sql.gz | mysql
oder:
zcat backup.sql.gz | mysql
✅ Zusammenfassung #
- Sicherer Passwortspeicher über
.my.cnf - Automatisches Backup via Shell-Skript
- Komprimierung spart Speicherplatz
- Cron sorgt für vollständige Automatisierung
📌 Optional Erweiterungen #
- Backup auf NAS / Cloud kopieren
- Verschlüsselung (gpg)
- Logging einbauen
- E-Mail bei Fehler
