146 votes

Supprimer la clause DEFINER des vidages MySQL

J'ai un dump MySQL d'une de mes bases de données. Dedans, il y a des clauses DEFINER qui ressemblent,

 "DEFINER=`root`@`localhost`" 

A savoir, ces clauses DEFINER se trouvent sur mes instructions CREATE VIEW et CREATE PROCEDURE. Existe-t-il un moyen de supprimer ces clauses DEFINER de mon fichier de vidage ?

98voto

Ricardo Martins Points 1249

Vous pouvez supprimer en utilisant SED

 sed -i 's/DEFINER=[^*]*\*/\*/g' mydump.sql

Sous MacOS :

 sed -i '' 's/DEFINER=[^*]*\*/\*/g' mydump.sql

73voto

maxhb Points 5802

Depuis mysql version 5.7.8, vous pouvez utiliser l' --skip-definer avec mysqlpump, par exemple :

 mysqlpump --skip-definer -h localhost -u user -p yourdatabase

Voir le manuel mysql mis à jour sur http://dev.mysql.com/doc/refman/5.7/en/mysqlpump.html#option_mysqlpump_skip-definer

20voto

Jonathan Points 2381

Conformément aux recommandations de l'autre, voici un exemple de la façon de retirer le DEFINER du vidage, une fois le vidage terminé :

 mysqldump -u user --password='password' -h localhost database | grep -v "50013 DEFINER" > dump.sql

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X