تغییر پسوورد root دیتابیس MySQL و MariaDB

ایجاد شده توسط | فروردین ۱۵, ۱۳۹۶

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

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

مرحله اول – مشخص کردن نسخه دیتابیس

 برای بازیابی پسوورد root باید نوع دیتابیس و نسخه ان را در سرور را مشخص کنید، دستورات بازیابی کلمه عبور در MariaDB و MySQL متفاوت خواهد است. برای همین منظور دستور زیر را در محیط Command-Line وارد نمایید.

mysql –version

در دیتابیس MySQL خروجی بصورت زیر خواهد بود:

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

با استفاده از دستور ذکر شده میتواند نسخه و نوع دیتابیس را مشخص نمود. پس از مشخص شدن نسخه دیتابیس و نوع ان وارد ادامه مراحل بازیابی کلمه عبور میشود.

مرحله سوم – متوقف کردن دیتابیس

 در این مرحله باید سرویس دیتابیس را متوقف کنید. برای این کار دستورات زیر را در محیط Command-Line وارد نمایید.

برای دیتابیس MySQL دستور زیر:

sudo systemctl stop mysql

و برای دیتابیس MariaDB دستور زیر را وارد نمایید:

sudo systemctl stop mariadb

پس از توقف دیتابیس شما میتوانید بصورت دستی پسوورد را بازیابی نمایید.

مرحله پهارم – راه اندازی دیتابیس بدون برسی وضعیت Permission

زمانی که دیتابیس MySQL و MariaDB بدون اطلاعات privileges کاربر راه اندازی شود، اجازه دسترسی محیط Command-Line دیتابیس را بدون درخواست پسوورد خواهید داشت.
برای انجام این کار دیتابیس باید بدون grant tables که اطلاعات privilege کاربر را نگهداری میکند راه اندازی شود. باید توجه داشته باشید که انجام این مورد یک ریسک امنیتی بوده و بهتر است زمان ریکاوری پسوود دسترسی کاربران به اینترنت و سرویس را محدود سازید تا کاربران به دیتابیس دسترسی نداشته باشند.

تذکر: زمانی که دیتابیس بدون در نظر گرفتن privilege راه اندازی میشود دیگر کاربران ممکن است به دیتابیس دسترسی داشته و در ان تغییر ایجاد نمایید. به همین دلیل سرویس دهی به کاربران را بطور موقث قطع نمایید.

برای اجرای دیتابیس بدون در نظر گرفتن مجوز ها دستور زیر را وارد نمایید:

sudo mysqld_safe –skip-grant-tables &

استفاده از علامت & این سرویس را در Background اجرا میکند، برای ورود به محیط Command-Line دیتابیس از دستور زیر استفاده نمایید.

mysql -uroot -p

پس از وارد کردن دستور بالا بدون درخواست پسوورد وارد prompt دیتابیس خواهید شد. خروجی با توجه به نوع دیتابیس به دو صورت زیر خواهد بود:

در حال حاضر با دسترسی root ایجاد شده میتوانید پسوورد را تغییر دهید.

مرحله چهارم – تغییر پسوورد Root

یک راه ساده برای تغییر پسوورد root در نسخه های جدید MySQL استفاده از دستور ALTER USER است، اگرچه این دستور به دلیل اینکه grant table لود نشده کار نمیکند. به همین دلیل با دستور FLUSH PRIVILEGES مجددا grant table را لود میکنیم.

FLUSH PRIVILEGES;

پس از لود grant table میتوانید با استفاده از دستور ALTER USER فیلد پسوورد را تغییر دهید. برای این منظور برای 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 پسوورد مورد نظر خود را وارد نمایید.

نکته: اگر دستور ALTER USER با خطا مواجه شد و کار نکرد این مورد به دلیل وجود مشکل بزرگتری است، اگرچه میتوانید دستور UPDATE … SET را نیز امتحان کنید.

UPDATE mysql.user SET password=PASSWORD(‘your_new_password’) WHERE user=’root’;

یادتان باشد پس از استفاده از دستور بالا  garant table را نیز لود نمایید.

FLUSH PRIVILEGES;

 

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

خب! پسوررد root دیتابیس به مقدار دلخواه شما تغییر کرد. حالا میتوانید دیتابیس را راه اندازی مجدد نمایید تا مانند قبل شروع به سرویس دهی نماید.

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

در این مرحله نیاز است تا دیتابیس که بصورت دستی در مرحله سوم راه اندازی شد متوقف شود. برای این منظور باید در ابتدا PID مربوط به دیتابیس را جستجو کرده و سیگنال SIGTERM را به ان ارسال نمایید. برای جستجو PID میتوانید از دستورات مختلفی استفاده نمایید. ما برای جستجو از دستور ps و grep استفاده میکنیم.

ps ax | grep mysql

خروجی دستور بالا بصورت زیر است.(البته ممکن است در نسخه های مختلف خروجی کمی متفاوت باشد)

پس از مشخص شدن PID میتوانید ان را به سادگی با دستور kill متوقف نمایید. در این سرور PID مربوط به دیتابیس 31564 است که با دستور زیر Process دیتابیس متوقف خواهد شد. برای این منظور از دستور زیر استفاده نمایید.

kill 31564

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

MySQL

sudo systemctl start mysql

MariaDB

sudo systemctl start mariadb

پس از راه اندازی مجدد میتوانید پسوورد جدید را امتحان کنید.

mysql -u root -p

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


امیدواریم این اموزش برای شما مفید بوده باشد. موفق و پیروز باشید.

منبع “ویکی کانفیگ”

پاسخ دهید

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