Leider schafft es mysqldump
nicht die DEFINER weg zu lassen.
Dadurch kann man ein Problem mit dem DEFINER bekommen wenn man von einer anderen Maschine einen Dump einspielen will.
DEFINER:
- DEFINER = `skip-grants user`@`skip-grants host`
- DEFINER = root@localhost
Dazu kommen DEFINER mit dem Usernamen des Systems.
Außer, im generierten Dump per „suchen & ersetzen“ die DEFINER zu entfernen, gibt es wohl keine Lösung.
-- remove sed -i -e 's/DEFINER=`root`@`localhost`//g' dump.sql sed -i -e 's/DEFINER=`skip-grants user`@`skip-grants host`//g' dump.sql -- find & replace sed -i -e 's/DEFINER=`root`@`localhost`/DEFINER=`masteruser`@`%`/g' dump.sql
mysqlpump
Dann gibt es seit 5.6 mysqlpump:
sudo mysqlpump dbname --skip-definer > /home/allapow/dump.sql # Dump progress: 1/9 tables, 0/719 rows # mysqlpump: [ERROR] (1449) The user specified as a definer ('skip-grants user'@'skip-grants host') does not exist # Dump process encountered error and will not continue. # Speicherzugriffsfehler