Aquí hay una solución de trabajo completa para eliminar la información DEFINER para MySQL 5.6.x
Linux. (Probado enCentOS 6.5
).
Por lo general, tenemos que reemplazar las siguientes entradas del volcado de Mysql (si se toman junto con los datos y los activadores / rutinas / funciones).
/*!50013 DEFINER=`MYSQLUSER`@`localhost` SQL SECURITY DEFINER */
/*!50013 DEFINER=`MYSQLUSER`@`%` SQL SECURITY DEFINER */
CREATE DEFINER=`MYSQLUSER`@`%` PROCEDURE `PROCEDURENAME`(
CREATE DEFINER=`MYSQLUSER`@`localhost` PROCEDURE `PROCEDURENAME`(
CREATE DEFINER=`MYSQLUSER`@`%` FUNCTION `FUNCTIONNAME`(
CREATE DEFINER=`MYSQLUSER`@`localhost` FUNCTION `FUNCTIONNAME`(
/*!50003 CREATE*/ /*!50017 DEFINER=`MYSQLUSER`@`%`*/ /*!50003 TRIGGER `TRIGGERNAME`
/*!50003 CREATE*/ /*!50017 DEFINER=`MYSQLUSER`@`localhost`*/ /*!50003 TRIGGER `TRIGGERNAME`
El volcado se realizó con el siguiente comando mysqldump.
mysqldump -uMYSQLUSER -pPASSWORD DATABASENAME -R > dbdump.sql
El archivo de volcado requerido sin información de DEFINER se puede obtener con los siguientes tres comandos.
Command-1
sed -i 's|DEFINER=[^*]*\*|\*|g' [PATH/]dbdump.sql
Command-2
find -name [PATH/]dbdump.sql | xargs perl -pi -e "s/ DEFINER=\`MYSQLUSER\`@\`localhost\`//"
Command-3
find -name [PATH/]dbdump.sql | xargs perl -pi -e "s/ DEFINER=\`MYSQLUSER\`@\`%\`//"
Si el archivo de volcado está en su carpeta actual, ignore [PATH /].
Si los datos en las tablas son muy grandes, realice el volcado en dos archivos, en un archivo de volcado tome el volcado con datos y en otro archivo de volcado tome el volcado solo de los scripts (Disparadores / Funciones / Procedimientos) y ejecute los tres anteriores comandos en el segundo archivo de volcado (scripts).