فراموشکردن رمز عبور root دیتابیس اتفاقی است که برای هر کسی ممکن است بیفتد. اگر رمز عبور root دیتابیس MySQL یا MariaDB خود را فراموش کردید یا گم کردید و دسترسی ssh به سرور و کاربری با دسترسی sudo دارید، هنوز هم میتوانید رمز عبور را بازیابی یا ریست کنید.
این آموزش نحوه ریست کردن رمز root برای دیتابیسهای MySQL و MariaDB که با apt package manager روی Ubuntu 20.04 نصب شدهاند را توضیح میدهد. این دستورالعملها روی Ubuntu 20.04 و پکیجهای عرضهشده با توزیع تست شدهاند.
نکته: در نصب پیشفرض Ubuntu 20.04 معمولاً تنظیمات دیتابیس طوری است که میتوانید بدون رمز عبور، وقتی با root سیستم متصل میشوید، وارد دیتابیس شوید. قبل از ریست کردن رمز، با دستور زیر امتحان کنید:
sudo mysql
اگر با این روش وارد شدید، نیازی به ریست رمز نیست. اما اگر خطای دسترسی دریافت کردید، مراحل زیر را دنبال کنید.
پیشنیازها
- دسترسی به سرور Ubuntu 20.04 با یک کاربر sudo.
نکته: هر دو راهنما، تنظیمات پیشفرض را نگه میدارند و برای root رمز تنظیم نمیکنند، اگر به root سیستم دسترسی دارید. با این حال برای تعیین رمز جدید، این راهنما قابل استفاده است.
تشخیص سرویس نصبشده (MySQL یا MariaDB)
برای تعیین اینکه کدام دیتابیس نصب است، دستور زیر را اجرا کنید:
mysql --version
اگر MariaDB نصب باشد، در خروجی عبارت “MariaDB” خواهید دید. برای MySQL خروجی به همین نام خواهد بود.
نوع دیتابیس را یادداشت کنید و گامهای مربوط به آن را جلو ببرید.
گام ۱: توقف سرویس دیتابیس
برای MariaDB:
sudo systemctl stop mariadb
برای MySQL:
sudo systemctl stop mysql
گام ۲: اجرا در مد امن (Safe Mode) بدون grant tables و networking
برای MariaDB، دستور زیر متغیر محیطی MYSQLD_OPTS را با گزینههای –skip-grant-tables و –skip-networking تنظیم میکند:
sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
sudo systemctl start mariadb
برای چک کردن اجرا شدن:
sudo systemctl status mariadb
سپس وارد کنسول MariaDB شوید:
sudo mysql
برای MySQL باید فایل override configuration را ویرایش کنید:
sudo systemctl edit mysql
این فایل خالی است، متن زیر را قرار دهید:
[Service] ExecStart= ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking
با Ctrl+X خارج شوید، Y را بزنید و با Enter تأیید کنید.
sudo systemctl daemon-reload sudo systemctl start mysql sudo mysql
گام ۳: بارگذاری مجدد grant tables و تغییر رمز root
FLUSH PRIVILEGES;
برای MariaDB، دستور زیر را وارد کنید و new_password را با رمز جدید قوی جایگزین کنید:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
برای اطمینان از استفادهی مکانیزم تأیید هویت پیشفرض MariaDB، این دستورات را هم اجرا کنید:
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root'; FLUSH PRIVILEGES;
برای MySQL، دستور زیر را اجرا کنید:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
سپس از کنسول خارج شوید:
exit
گام ۴: بازگرداندن دیتابیس به حالت عادی
برای MariaDB متغیر محیطی را unset کنید:
sudo systemctl unset-environment MYSQLD_OPTS sudo systemctl restart mariadb
برای MySQL، تنظیمات اعمالشده را حذف کنید:
sudo systemctl revert mysql sudo systemctl daemon-reload sudo systemctl restart mysql
گام ۵: بررسی رمز جدید
برای تست ورود با رمز جدید، دستور زیر را اجرا کنید:
mysql -u root -p
رمز جدید را وارد کنید تا وارد کنسول شوید.
شما دوباره به حساب کاربری root دسترسی مدیریتی به دیتابیس MySQL یا MariaDB دارید. توصیه میشود رمز عبور جدید را با اطمینان و به صورت ایمن نگه دارید.
برای اطلاعات بیشتر درباره مدیریت کاربران، مکانیزمهای احراز هویت، یا ریست رمز عبور برای نسخههای دیگر MySQL یا MariaDB به مستندات رسمی MySQL یا مستندات MariaDB مراجعه کنید.
از همراهی شما با پارمین کلود متشکریم.
نظرات کاربران