در صورت فراموشی رمز عبور root در پایگاه داده MySQL یا MariaDB، با دسترسی به root یا کاربری با دسترسیهای مشابه root میتوانید رمز عبور را بازیابی نماییم.
در این آموزش نحوه تنظیم مجدد رمز عبور MySQL یا MariaDB ارائه میگردد.
جهت بازیابی رمز عبور MySQL یا MariaDB به یک کاربر با دسترسی sudo
نیاز داریم.
در اکثر توزیعهای مدرن لینوکس مانند CentOS یا Debian و CentOS، از پایگاه داده MySQL یا MariaDB استفاده میشود. MariaDB یک جایگزین محبوب و سازگار برای MySQL است. با توجه به پایگاه داده خود، جهت بازیابی رمز عبور میبایست از دستورات مختلفی استفاده نماییم.
جهت بررسی نسخه MySQL از دستور زیر استفاده نماییم.
mysql --version
خروجی نمونه:
mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
یا در صورت استفاده از پایگاه داده MariaDB خروجی به صورت زیر خواهد بود.
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
توجه داشته باشید با توجه به بانک اطلاعاتی خود، دستورات بعدی را میبایست بین MySQL یا MariaDB انتخاب نمایید.
برای تغییر رمز عبور root پایگاه داده، میبایست در ابتدا سرور پایگاه داده را متوقف نماییم.
بدین منظور از دستورات زیر استفاده نمایید.
برای MySQL میتوانید از دستور زیر استفاده نمایید:
sudo systemctl stop mysql
برای MariaDB نیز میتوانید از دستور زیر استفاده نمایید:
sudo systemctl stop mariadb
در حال حاضر، بدون نیاز به رمز عبور، به پایگاه داده دسترسی خواهیم داشت.
اگر MySQL یا MariaDB را بدون بارگذاری اطلاعات مربوط به مجوز اجرا کنید، به شما این امکان را میدهد که بدون نیاز به رمز عبور، به خط فرمان پایگاه داده دسترسی پیدا کنید.
بدین منظور از دستور زیر استفاده نمایید.
sudo mysqld_safe --skip-grant-tables --skip-networking &
علامت & در آخر دستور باعث میشود این دستور در پس زمینه (Background) اجرا شود، بنابراین میتوانیم به استفاده از Terminal ادامه دهیم.
اکنون میتوانیم به root پایگاه داده MySQL یا MariaDB بدون نیاز به رمز عبور دسترسی پیدا کنیم.
با استفاده از دستور زیر میتوانیم به Shell (شل) MySQL یا MariaDB دسترسی پیدا کنیم:
mysql -u root
در صورت استفاده از MySQL با نمونه خروجی زیر روبرو خواهیم شد.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
و در صورت استفاده از MariaDB به عنوان پایگاه داده خروجی به صورت زیر خواهد بود.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
در حال حاضر دسترسی کامل جهت تغییر رمز عبور root را خواهیم داشت.
بک روش ساده برای تغییر رمز عبور root در نسخههای مدرن MySQL یا MariaDB استفاده از دستور ALTER USER میباشد.
ابتدا با استفاده از دستور FLUSH PRIVILEGES جداول کمکی (grant tables) را بارگیری مجدد مینماییم.
mysql> FLUSH PRIVILEGES;
هم اکنون میتوانیم رمز عبور root را تغییر دهیم.
در نسخههای MySQL 5.7.6 و جدیدتر و همچنین MariaDB 10.1.20 و جدیدتر از دستور زیر استفاده مینماییم.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
در نسخههای MySQL 5.7.5 و قدیمیتر و همچنین MariaDB 10.1.20 و قدیمیتر از دستور زیر استفاده مینماییم.
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
مطمئن شوید که در دو دستور بالا new_password
را با رمز عبور جدید خود تکمیل نمایید.
در صورت ورود رمز عبور جدید و تایپ مجدد آن بصورت صحیح، با پیغام زیر مبنی بر موفقیت آمیز بودن انجام تغییرات مواجه خواهیم شد.
Query OK, 0 rows affected (0.00 sec)
ابتدا نمونهای از سرور پایگاه داده که در مرحله 3 بصورت دستی ایجاد کردهایم را با استفاده از دستور زیر متوقف (Stop) مینماییم.
برای MySQL از دستور زیر استفاده کنید:
sudo kill `cat /var/run/mysqld/mysqld.pid`
برای MariaDB از دستور زیر استفاده کنید:
sudo kill `cat /var/run/mariadb/mariadb.pid`
این دستور PID یا Process ID مربوط به پردازش MySQL یا MariaDB را جستجو میکند و یک SIGTERM ارسال میکند که پس از عملیات پاکسازی از آن خارج شود.
سپس سرویس MySQL یا MariaDB را با دستور systemctl
ریستارت کنید.
برای MySQL از دستور زیر استفاده کنید:
sudo systemctl start mysql
برای MariaDB از دستور زیر استفاده کنید:
sudo systemctl start mariadb
اکنون میتوانید با استفاده از دستور زیر، عملکرد صحیح عملیات انجام شده را بررسی نماییم.
mysql -u root -p
پس از ورود رمز عبور جدید تعیین شده میبایست به محیط مدیریت پایگاه داده خود وارد شوید.