İşte MySQL 5.6.xLinux için DEFINER bilgilerini kaldırmak için eksiksiz bir çalışma çözümü . (Test edildi CentOS 6.5).
Genellikle Mysql dökümünden aşağıdaki girişleri değiştirmemiz gerekir (veriler ve tetikleyiciler / rutinler / işlevlerle birlikte alınırsa).
/*!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`
Döküm, aşağıdaki mysqldump komutu ile alınmıştır.
mysqldump -uMYSQLUSER -pPASSWORD DATABASENAME -R > dbdump.sql
DEFINER bilgisi içermeyen gerekli döküm dosyası aşağıdaki üç komutla elde edilebilir.
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\`@\`%\`//"
Döküm dosyası mevcut klasörünüzdeyse, [PATH /] 'i yoksayın.
Tablolardaki veriler çok büyükse, dökümü iki dosyaya alın, bir döküm dosyasında veri dökümü alın ve diğer döküm dosyasında yalnızca komut dosyalarının dökümünü alın (Tetikleyiciler / Fonksiyonlar / Prosedürler.) Ve yukarıdaki üç dosyayı çalıştırın. 2. döküm (betikler) dosyasındaki komutlar.