اگر رمز عبور کاربر ریشهٔ MySQL به هر دلیلی گم شده باشد که حتی درون اسناد پیکربندی سرور هم نتوانیم آن را پیدا کنیم، باید از حالت mysqld_safe بهره ببریم. از نشانههای بروز یک چنین مشکلی، عدم دسترسی به دیتابیس MySQL روی سرور، در صورتی است که سرویس MySQL به درستی در حال اجرا است. معمولاً مثلاً روی کنترل پنل سی پنل خطای The MySQL server is currently offline را مشاهده خواهید کرد.
برای رفع این مشکل ابتدا سرویس MySQL را خاموش میکنیم.
service mysql stop
سپس با دستور زیر مطمئن میشویم که هیچ پردازشی از MySQL در حال اجرا نیست. معمولاً یک خط نتیجه با این عبارت بر میگردد که مهم نیست.
ps aux | grep mysql
اگر این گونه بود، میبایستی با دستور زیر اقدام به خاموش کردن پردازشهای مورد نظر کنیم:
killall -9 mysql
به جای mysql در دستور بالا، باید شماره پردازش/پردازشها را وارد کنیم.
حال نوبت به ورود به حالت امن است:
/usr/bin/mysqld_safe --skip-grant-tables &
الان وقت آن است که دستور mysql را اجرا کنید:
mysql
شما وارد خط فرمان MySQL در حالت امن شدید. پایگاه داده اصلی را انتخاب میکنیم:
use mysql;
رمز عبور جدید را تنظیم میکنیم:
update user set password=PASSWORD("putpasswordhere") where user='root';
که به جای putpasswordhere باید رمز عبور جدید را وارد کنیم.
این دستور را برای بازیابی دسترسیها میزنیم:
flush privileges;
حالا از MySQL خارج میشویم.
quit:
در آخر باید سرویس MySQL که به صورت حالت امن اجرا شده است را خاموش کنیم. این کار را هم با دستور kill میتوان انجام داد. پس از آن مجدد سرویس MySQL را به صورت عادی اجرا میکنیم.
service mysql start
یک بار دستور mysql را اجرا کنید. اگر خطایی وجود نداشت، به این معنی است که رمز عبور با موفقیت تغییر کرده و خطایی وجود ندارد. از دستور زیر هم برای بررسی میتوانید استفاده کنید.
mysql -u root -p