معرفی

رمز عبور پایگاه داده خود را فراموش کرده اید؟ برای بهترین ما اتفاق می افتد. اگر رمز عبور اصلی پایگاه داده MySQL یا MariaDB خود را فراموش کرده یا گم کرده اید، اگر به سرور و یک حساب کاربری با امتیازات sudo دسترسی دارید، همچنان می توانید دسترسی داشته باشید و رمز عبور را بازنشانی کنید.

این آموزش نشان می دهد که چگونه رمز عبور ریشه برای پایگاه های داده MySQL و MariaDB نصب شده با مدیر بسته apt در اوبونتو 20.04 را بازنشانی کنید. روش تغییر رمز عبور ریشه بسته به اینکه MySQL یا MariaDB را نصب کرده باشید و پیکربندی سیستمی پیش‌فرض که با توزیع یا بسته‌های فروشندگان دیگر ارسال می‌شود، متفاوت است. در حالی که دستورالعمل‌های این آموزش ممکن است با سایر نسخه‌های سرور سیستم یا پایگاه داده کار کند، اما با Ubuntu 20.04 و بسته‌های عرضه‌شده توسط توزیع آزمایش شده‌اند.

پیش نیازها

برای بازیابی رمز عبور ریشه MySQL یا MariaDB، به موارد زیر نیاز دارید:

  • دسترسی به سرور اوبونتو 20.04 در حال اجرا MySQL یا MariaDB با کاربر sudo یا راه دیگری برای دسترسی به سرور با امتیازات ریشه.
  • برای اینکه روش های بازیابی را در این آموزش بدون تاثیر روی سرور تولید خود آزمایش کنید، یک سرور آزمایشی ایجاد کنید و سپس آموزش اولیه راه اندازی سرور ما را دنبال کنید. مطمئن شوید که یک کاربر معمولی و غیر ریشه با امتیازات sudo ایجاد کنید. سپس MySQL را طبق راهنمای ما در مورد نحوه نصب MySQL در اوبونتو 20.04 نصب کنید یا MariaDB را به دنبال نحوه نصب MariaDB در اوبونتو 20.04 نصب کنید.

مرحله 1 – شناسایی نسخه پایگاه داده و توقف سرور

اوبونتو 20.04 یا MySQL یا MariaDB را اجرا می‌کند—یک جایگزین محبوب که با MySQL سازگار است. بسته به اینکه کدام یک از آنها را نصب کرده اید، باید از دستورات مختلفی برای بازیابی رمز عبور root استفاده کنید، بنابراین مراحل این بخش را دنبال کنید تا مشخص کنید کدام سرور پایگاه داده را اجرا می کنید.

نسخه خود را با دستور زیر بررسی کنید:

mysql –version

اگر MariaDB را اجرا می کنید، “MariaDB” را با شماره نسخه در خروجی مشاهده خواهید کرد:

MariaDB output
mysql  Ver 15.1 Distrib 10.3.25-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

اگر MySQL را اجرا می کنید، خروجی مانند زیر را خواهید دید:

MySQL output
mysql  Ver 8.0.22-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))

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

برای تغییر رمز عبور ریشه، باید سرور پایگاه داده را خاموش کنید. اگر MariaDB را اجرا می کنید، می توانید این کار را با دستور زیر انجام دهید:

sudo systemctl stop mariadb

برای MySQL، سرور پایگاه داده را با اجرای زیر خاموش کنید:

sudo systemctl stop mysql

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

مرحله 2 – راه اندازی مجدد سرور پایگاه داده بدون بررسی مجوز

اجرای MySQL و MariaDB بدون بررسی مجوز امکان دسترسی به خط فرمان پایگاه داده با امتیازات root را بدون ارائه رمز عبور معتبر فراهم می کند. برای انجام این کار، باید پایگاه داده را از بارگیری جداول کمک هزینه، که اطلاعات امتیازات کاربر را ذخیره می کند، متوقف کنید. از آنجایی که این کمی یک خطر امنیتی است، ممکن است بخواهید شبکه را غیرفعال کنید تا از اتصال سایر کلاینت ها به سرور آسیب پذیر موقت جلوگیری کنید.

بسته به سرور پایگاه داده ای که نصب کرده اید، نحوه راه اندازی سرور بدون بارگیری جداول کمک هزینه متفاوت است.

پیکربندی MariaDB برای شروع بدون Grant Tables

برای راه‌اندازی سرور MariaDB بدون جداول کمک هزینه، از فایل unit systemd برای تنظیم پارامترهای اضافی برای سرور MariaDB استفاده می‌کنیم.

دستور زیر را اجرا کنید، که متغیر محیطی MYSQLD_OPTS مورد استفاده توسط MariaDB را هنگام راه اندازی تنظیم می کند. گزینه های –skip-grant-tables و –skip-networking به MariaDB می گویند که بدون بارگیری جداول کمک هزینه یا ویژگی های شبکه راه اندازی شود:

sudo systemctl set-environment MYSQLD_OPTS=”–skip-grant-tables –skip-networking”

سپس سرور MariaDB را راه اندازی کنید:

sudo systemctl start mariadb

این دستور هیچ خروجی تولید نمی کند، اما با در نظر گرفتن تنظیمات متغیر محیط جدید، سرور پایگاه داده را مجددا راه اندازی می کند.

می توانید مطمئن شوید که با sudo systemctl status mariadb شروع شده است.

اکنون باید بتوانید به عنوان کاربر ریشه MariaDB بدون ارائه رمز عبور به پایگاه داده متصل شوید:

sudo mysql -u root

بلافاصله یک درخواست پوسته پایگاه داده را خواهید دید

اکنون که به سرور پایگاه داده دسترسی دارید، می توانید رمز عبور root را همانطور که در مرحله 3 نشان داده شده است تغییر دهید.

پیکربندی MySQL برای شروع بدون Grant Tables

برای راه‌اندازی سرور MySQL بدون جداول کمکی آن، پیکربندی systemd را برای MySQL تغییر می‌دهید تا هنگام راه‌اندازی، پارامترهای اضافی خط فرمان را به سرور ارسال کنید.

برای این کار دستور زیر را اجرا کنید:

sudo systemctl edit mysql

این دستور یک فایل جدید را در ویرایشگر نانو باز می کند که از آن برای ویرایش سرویس های MySQL استفاده می کنید. اینها پارامترهای سرویس پیش فرض MySQL را تغییر می دهند.

این فایل خالی خواهد بود. مطالب زیر را اضافه کنید:

MySQL service overrides
[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking

اولین عبارت ExecStart مقدار پیش‌فرض را پاک می‌کند، در حالی که دستور دوم دستور راه‌اندازی جدید، از جمله پارامترهایی برای غیرفعال کردن بارگیری جداول اعطایی و قابلیت‌های شبکه را در اختیار systemd قرار می‌دهد.

CTRL-x را برای خروج از فایل فشار دهید، سپس Y را فشار دهید تا تغییراتی که ایجاد کرده اید ذخیره شود، سپس برای تایید نام فایل، ENTER را فشار دهید.

برای اعمال این تغییرات، پیکربندی systemd را دوباره بارگیری کنید:

sudo systemctl daemon-reload

اکنون سرور MySQL را راه اندازی کنید:

sudo systemctl start mysql

فرمان هیچ خروجی نشان نمی دهد، اما سرور پایگاه داده شروع به کار می کند. جداول کمک هزینه و شبکه فعال نخواهد شد.

به عنوان کاربر ریشه به پایگاه داده متصل شوید:

sudo mysql -u root

بلافاصله یک درخواست پوسته پایگاه داده را خواهید دید

اکنون که به سرور دسترسی دارید، می توانید رمز عبور root را تغییر دهید.

مرحله 3 – تغییر رمز عبور ریشه

سرور پایگاه داده اکنون در حالت محدود در حال اجرا است. جداول کمک هزینه بارگیری نمی شوند و هیچ پشتیبانی شبکه ای فعال نیست. این به شما امکان می دهد بدون ارائه رمز عبور به سرور دسترسی داشته باشید، اما شما را از اجرای دستوراتی که داده ها را تغییر می دهند منع می کند. برای بازنشانی رمز عبور ریشه، اکنون که به سرور دسترسی پیدا کرده اید، باید جداول کمک هزینه را بارگیری کنید.

با صدور دستور FLUSH PRIVILEGES به سرور پایگاه داده بگویید جداول کمک هزینه را دوباره بارگیری کند:

FLUSH PRIVILEGES;

اکنون می توانید رمز عبور root را تغییر دهید. روشی که استفاده می کنید بستگی به این دارد که آیا از MariaDB یا MySQL استفاده می کنید.

تغییر رمز عبور MariaDB

اگر از MariaDB استفاده می‌کنید، عبارت زیر را برای تنظیم رمز عبور برای حساب اصلی اجرا کنید، و مطمئن شوید که new_password را با یک رمز عبور قوی جدید جایگزین کنید که به خاطر بسپارید:

ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘new_password’;

این خروجی را خواهید دید که نشان می دهد رمز عبور تغییر کرده است:

Output
Query OK, 0 rows affected (0.001 sec)

MariaDB امکان استفاده از مکانیزم های احراز هویت سفارشی را فراهم می کند، بنابراین دو عبارت زیر را اجرا کنید تا مطمئن شوید که MariaDB از مکانیسم احراز هویت پیش فرض خود برای رمز عبور جدیدی که به حساب root اختصاص داده اید استفاده می کند:

UPDATE mysql.user SET authentication_string = ” WHERE user = ‘root’;
UPDATE mysql.user SET plugin = ” WHERE user = ‘root’;

خروجی زیر را برای هر عبارت خواهید دید:

Output
Query OK, 0 rows affected (0.01 sec)

رمز عبور اکنون تغییر کرده است. برای خروج از کنسول MariaDB عبارت exit را تایپ کنید و برای راه اندازی مجدد سرور پایگاه داده در حالت عادی به مرحله 4 بروید.

تغییر رمز عبور MySQL

برای MySQL، عبارت زیر را اجرا کنید تا رمز عبور کاربر اصلی را تغییر دهید، و new_password را با یک رمز عبور قوی که به خاطر بسپارید جایگزین کنید. MySQL امکان استفاده از مکانیسم‌های احراز هویت سفارشی را فراهم می‌کند، بنابراین عبارت زیر همچنین مطمئن می‌شود که MySQL از مکانیسم احراز هویت پیش‌فرض خود برای احراز هویت کاربر root با استفاده از رمز عبور جدید استفاده می‌کند:

ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘new_password’;

این خروجی را مشاهده خواهید کرد که نشان می دهد رمز عبور با موفقیت تغییر کرده است:

Output
Query OK, 0 rows affected (0.01 sec)

رمز عبور اکنون تغییر کرده است. با تایپ exit از کنسول MySQL خارج شوید.

بیایید پایگاه داده را در حالت عملیاتی معمولی راه اندازی مجدد کنیم.

مرحله 4 – سرور پایگاه داده خود را به تنظیمات عادی برگردانید

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

برای MariaDB، متغیر محیطی MYSQLD_OPTS را که قبلا تنظیم کرده بودید، از حالت تنظیم خارج کنید:

sudo systemctl unset-environment MYSQLD_OPTS

سپس، سرویس را با استفاده از systemctl راه اندازی مجدد کنید:

sudo systemctl restart mariadb

برای MySQL، پیکربندی اصلاح شده systemd را حذف کنید:

sudo systemctl revert mysql

خروجی مشابه زیر را خواهید دید:

Output
Removed /etc/systemd/system/mysql.service.d/override.conf.
Removed /etc/systemd/system/mysql.service.d.

سپس، پیکربندی systemd را دوباره بارگیری کنید تا تغییرات اعمال شود:

sudo systemctl daemon-reload

در نهایت سرویس را مجددا راه اندازی کنید:

sudo systemctl restart mysql

اکنون پایگاه داده مجدداً راه اندازی شده و به حالت عادی خود بازگشته است. با ورود به عنوان کاربر اصلی با رمز عبور، تأیید کنید که رمز عبور جدید کار می کند:

mysql -u root -p

از شما یک رمز عبور خواسته می شود. رمز عبور جدید خود را وارد کنید و همانطور که انتظار می رود به اعلان پایگاه داده دسترسی پیدا خواهید کرد.

نتیجه

شما دسترسی مدیریتی به سرور MySQL یا MariaDB را بازیابی کرده اید. مطمئن شوید رمز عبور جدیدی که انتخاب کرده اید قوی و ایمن است و آن را در مکانی امن نگه دارید.


سرور مجازی آلمان

سرور مجازی آمریکا

سرور مجازی فرانسه

سرور مجازی کانادا

سرور مجازی لهستان

سرور مجازی هلند

سرور مجازی انگلیس

 

برچسب‌ها:, , , , , , , , , , ,