MySQL Backupscripte sind ein potentielles Sicherheitsrisiko, wenn zum Sichern der root Benutzer verwendet wird. Denn meist steht das Passwort direkt im Script oder ist in der my.cnf abgelegt. Ein potenzieller Angreifer der lesend auf das System gelangt, hat dadurch leichtes Spiel an die Passwörter zu kommen. Deshalb empfiehlt es sich Backups mit einem separaten Benutzer anzulegen, der nur die nötigsten Rechte hat. Ich gehe meist wie folgt vor:
Benutzer angelegen
CREATE USER 'backupnutzer'@'localhost' IDENTIFIED BY 'geheim';
Berechtigungen setzen (Wer keine Trigger oder Views benutzt kann SHOW VIEW bzw. TRIGGER auch weg lassen.)
GRANT SELECT, FILE, LOCK TABLES, SHOW VIEW, TRIGGER ON *.* TO 'backupnutzer'@'localhost';
Hinweis! Diese Query vergibt globale Rechte. Will man nur auf eine bestimmte Datenbank sichern sollte der Befehl so aussehen.
GRANT SELECT, LOCK TABLES, SHOW VIEW, TRIGGER ON datenbank.* TO 'backupnutzer'@'localhost';
Rechte neu einlesen
FLUSH PRIVILEGES;
Fertig. Nun kann der Benutzer backupnutzer mit dem Passwort geheim in den Scripten verwendet werden. Ein potentieller Angreifer würde zwar trotzdem noch auf die Datenbank gelangen, könnte aber deutlich weniger Schaden anrichten.