پایگاه داده, لینوکس, مدیریت سرور لینوکس

آموزش تغییر پسورد root دیتابیس MySQL و MariaDB

آموزش تغییر پسورد root دیتابیس MySQL و MariaDB

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

آموزش تغییر پسورد root دیتابیس 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 دیتابیس خواهید شد. خروجی با توجه به نوع دیتابیس به دو صورت زیر خواهد بود:

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

در حال حاضر با دسترسی 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;

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

Query OK, 0 rows affected (0.00 sec)

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

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

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

ps ax | grep mysql

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

[root@server]#ps ax | grep mysql
8399 pts/0 S+ 0:00 grep --color=auto mysql
31564 ? Ss 0:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
31802 ? Sl 51:37 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/lib/mysql/server.wikiconfig.ir.err --pid-file=server.wikiconfig.ir.pid --socket=/var/lib/mysql/mysql.sock --port=3306

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

kill 31564

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

MySQL

sudo systemctl start mysql

MariaDB

sudo systemctl start mariadb

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

mysql -u root -p

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

مطالب مرتبط

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

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