راهنمای ریست کردن پسورد root در MySQL و MariaDB



فراموش کردن رمز عبور root برای دیتابیس MySQL یا MariaDB یکی از مشکلاتی است که می‌تواند هر مدیر سروری را با چالش مواجه کند. کاربر root در دیتابیس، بالاترین سطح دسترسی را دارد و بدون رمز آن، مدیریت کاربران و پایگاه‌های داده غیرممکن می‌شود. خوشبختانه، فرآیند بازیابی رمز mysql و تنظیم مجدد آن با داشتن دسترسی به سرور، بسیار ساده است.

این راهنما به شما روش صحیح و امن برای تغییر پسورد mysql را روی تمام توزیع‌های مدرن لینوکس آموزش می‌دهد. برای انجام این مراحل، شما به دسترسی کامل SSH به سرور نیاز دارید که با خرید vps این امکان برای شما فراهم می‌شود.
 

پیش‌نیازها

 

  • یک سرور لینوکس (مانند اوبونتو، دبیان، AlmaLinux و…).
  • دسترسی به سرور با کاربر root یا یک کاربر با دسترسی sudo.

 

قدم اول: متوقف کردن سرویس دیتابیس

 

اولین قدم، متوقف کردن کامل سرویس MySQL یا MariaDB است تا بتوانیم آن را در یک حالت خاص و بدون نیاز به رمز عبور راه‌اندازی کنیم.

# برای MariaDB
sudo systemctl stop mariadb

# برای MySQL
sudo systemctl stop mysql

 

قدم دوم: راه‌اندازی مجدد در حالت Safe Mode (بدون بررسی دسترسی‌ها)

 

حالا ما سرویس را با یک فلگ خاص به نام --skip-grant-tables اجرا می‌کنیم. این فلگ به دیتابیس می‌گوید که بدون بررسی جدول‌های دسترسی و نیاز به رمز عبور، راه‌اندازی شود.

sudo mysqld_safe --skip-grant-tables --skip-networking &

توضیح دستور:

  • --skip-networking: برای افزایش امنیت در این مرحله، از پاسخگویی دیتابیس به اتصالات شبکه جلوگیری می‌کند.
  • &: این علامت، دستور را در پس‌زمینه (background) اجرا می‌کند تا ترمینال شما برای اجرای دستورات بعدی آزاد باشد.

 

قدم سوم: ورود به دیتابیس و تغییر رمز عبور

 

حالا که دیتابیس بدون نیاز به رمز در حال اجراست، به راحتی می‌توانیم به آن وارد شده و رمز را تغییر دهیم.

  1. وارد محیط mysql shell شوید:
    sudo mysql -u root
  2. دستور زیر را برای بارگذاری مجدد دسترسی‌ها اجرا کنید. این کار برای اجرای دستور تغییر رمز ضروری است.
    FLUSH PRIVILEGES;
  3. حالا با استفاده از دستور ALTER USER، رمز عبور کاربر root را تغییر دهید. فراموش نکنید که 'new_strong_password' را با رمز عبور قوی جدید خود جایگزین کنید.
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_strong_password';

    نکته مهم: روش قدیمی استفاده از UPDATE ... SET Password=PASSWORD(...) در نسخه‌های جدید MySQL و MariaDB منسوخ شده و کار نمی‌کند. روش صحیح استفاده از ALTER USER است.

  4. از محیط mysql shell خارج شوید:
    EXIT;

 

قدم چهارم: توقف حالت Safe Mode و راه‌اندازی مجدد سرویس

 

حالا باید فرآیند ناامنی که در پس‌زمینه در حال اجراست را متوقف کرده و سرویس دیتابیس را به حالت عادی برگردانیم.

  1. با دستور زیر، فرآیند mysqld_safe را پیدا کرده و آن را متوقف کنید:
    sudo kill `cat /var/run/mysqld/mysqld.pid`

    (مسیر فایل .pid ممکن است در برخی سیستم‌ها متفاوت باشد).

  2. در نهایت، سرویس دیتابیس را به صورت عادی و امن راه‌اندازی کنید:
    # برای MariaDB
    sudo systemctl start mariadb
    
    # برای MySQL
    sudo systemctl start mysql

اکنون رمز عبور root دیتابیس شما با موفقیت تغییر کرده است و می‌توانید با رمز جدید به آن متصل شوید. این فرآیند یکی از مهارت‌های کلیدی در مدیریت یک خرید سرور مجازی است.