مشکل بازگردانی دیتابیس با Function و Procedure
هنگام بازگردانی (restore) یک دیتابیس MySQL که شامل Stored Functions و Stored Procedures است، ممکن است با خطاهایی مواجه شوید. رایجترین خطا مربوط به DEFINER و log_bin_trust_function_creators است.
این مشکل بهخصوص هنگام انتقال دیتابیس بین سرورها، بازگردانی از بکاپ cPanel/DirectAdmin، و import فایل SQL در phpMyAdmin رخ میدهد.
خطاهای رایج
خطای ERROR 1227: Access denied; you need SUPER privilege هنگامی رخ میدهد که DEFINER تابع با کاربر فعلی متفاوت است. خطای ERROR 1418: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA مربوط به تنظیمات binary logging است.
روشهای رفع
روش ۱: فعالسازی log_bin_trust_function_creators
این تنظیم به MySQL اجازه میدهد توابع را بدون نیاز به دسترسی SUPER بپذیرد:
mysql -u root -p -e "SET GLOBAL log_bin_trust_function_creators = 1;"
برای دائمی کردن، در /etc/my.cnf اضافه کنید:
[mysqld]
log_bin_trust_function_creators = 1
روش ۲: حذف DEFINER از فایل بکاپ
قبل از import، DEFINER را از فایل SQL حذف کنید:
sed -i 's/DEFINER=[^ ]* //g' backup.sql
یا اگر فایل بزرگ است:
sed 's/DEFINER=[^*]*\*/\*/' backup.sql > clean_backup.sql
روش ۳: استفاده از mysqldump با گزینههای صحیح
هنگام بکاپگیری، از گزینههای زیر استفاده کنید تا مشکلات بازگردانی کمتر شود:
mysqldump -u root -p --routines --triggers --single-transaction database_name > backup.sql
گزینه --routines تمام Functions و Procedures را شامل میکند.
روش ۴: بازگردانی با دسترسی root
اگر دسترسی root دارید:
mysql -u root -p database_name < backup.sql
کاربر root معمولاً دسترسی SUPER دارد و مشکلی با DEFINER نخواهد داشت.
بازگردانی از phpMyAdmin
اگر از phpMyAdmin استفاده میکنید و با خطای DEFINER مواجه شدید، فایل SQL را ابتدا در کامپیوتر خود ویرایش کنید و DEFINERها را حذف نمایید، سپس import کنید. همچنین محدودیت حجم آپلود phpMyAdmin را در php.ini بررسی کنید.
نکات مهم
همیشه قبل از هر عملیات، یک بکاپ کامل تهیه کنید. تنظیم log_bin_trust_function_creators را پس از اتمام کار به مقدار اولیه برگردانید. اگر دیتابیس وردپرسی دارید، معمولاً شامل Function نیست مگر افزونههای خاصی نصب کرده باشید.
اگر سرور مجازی دارید و با مشکل بازگردانی دیتابیس مواجه شدهاید، خدمات کانفیگ سرور میهن هاستینگ شامل مدیریت و بازگردانی دیتابیس نیز میشود. همچنین هاست وردپرس میهن هاستینگ امکان بکاپ و بازگردانی آسان دیتابیس را فراهم کرده است.
⚙️ مدیریت دیتابیس سرور
بازگردانی دیتابیس، بهینهسازی MySQL و رفع خطاها توسط تیم فنی میهن هاستینگ.