آموزش ریست کردن رمز عبور کاربر root در MySQL یا MariaDB روی Ubuntu 20.04

فراموش‌کردن رمز عبور 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 مراجعه کنید.

از همراهی شما با پارمین کلود متشکریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *