MySQL 5.6.xলিনাক্স এবং লিনাক্সের জন্য ডিফাইনার তথ্য অপসারণের জন্য এখানে একটি সম্পূর্ণ কার্যক্ষম সমাধান । (পরীক্ষিত CentOS 6.5)।
সাধারণত আমাদের মাইএসকিএল ডাম্প থেকে নিম্নলিখিত এন্ট্রিগুলি প্রতিস্থাপন করতে হবে (যদি ডেটা এবং ট্রিগার / রুটিন / ফাংশন সহ নেওয়া হয়)।
/*!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`
ডাম্পটি নিচে মাইএসকিলডাম্প কমান্ড সহ নেওয়া হয়েছিল।
mysqldump -uMYSQLUSER -pPASSWORD DATABASENAME -R > dbdump.sql
ডিফাইনারের কোনও তথ্য না দিয়ে প্রয়োজনীয় ডাম্প ফাইলটি নীচে তিনটি কমান্ডের সাহায্যে পাওয়া যাবে।
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\`@\`%\`//"
যদি ডাম্প ফাইলটি আপনার বর্তমান ফোল্ডারে থাকে তবে [PATH /] উপেক্ষা করুন।
যদি টেবিলগুলিতে ডেটাগুলি খুব বিশাল হয় তবে দুটি ফর্মের মধ্যে ডাম্প নিন, একটি ডাম্প ফাইলে কেবলমাত্র স্ক্রিপ্টগুলির ডাম্প নেওয়ার জন্য ডাম্প এবং অন্য ডাম্প ফাইলে নিন (ট্রিগার / ফাংশন / পদ্ধতি)) এবং উপরের তিনটি চালান ২ য় ডাম্প (স্ক্রিপ্ট) ফাইলের কমান্ড