Unter Linux kann man mittels
mysqldump -u root -p<Passwort> --all-databases --result-file=dump.sql
alle MySQL Datenbanken in eine SQL Datei sichern. Allerdings kann es unter Umständen passieren, das man folgende Meldung bekommt:
mysqldump: Got error: 1449: The user specified as a definer ('u123456789'@'%') does not exist when using LOCK TABLES
Ein Workarround wäre es das ganze mit dem Parameter „–lock-tables=false“ aufzurufen:
mysqldump -u root -p<Passwort> --all-databases --result-file=dump.sql
Allerdings behandelt dies nur die Symptome. Um das Problem zu lösen wird im ersten Schritt der fehlende Nutzer angelegt.
GRANT ALL ON *.* TO 'u123456789'@'%' IDENTIFIED BY 'passwort';
Meist ist ein View oder eine Storaged Procedure in welcher der nicht existierende Nutzer definiert wurde, wie in diesem Beispiel:
ALTER ALGORITHM=UNDEFINED DEFINER=`u123456789`@`%` SQL SECURITY DEFINER VIEW `mana_v_online_chars` AS select `l`.`char_id` AS `char_id`,`l`.`login_date` AS `login_date`,`c`.`user_id` AS `user_id`,`c`.`name` AS `name`,`c`.`gender` AS `gender`,`c`.`level` AS `level`,`c`.`map_id` AS `map_id` from (`mana_online_list` `l` join `mana_characters` `c` on((`l`.`char_id` = `c`.`id`)))
Nachdem der View korrigiert wurde, in dem dort ein gültiger Nutzer angegeben wurde, kann der temporär angelegte Nutzer entfernt werden.