بلاگ/کلمه عبور روت MySQL؛ تنظیم، تغییر و بازگردانی
به‌روز شده

کلمه عبور روت MySQL؛ تنظیم، تغییر و بازگردانی

در این مطلب آموزشی، نحوه تنظیم، تغییر و بازگردانی کلمه عبور روت MySQL یا MariaDB را بررسی خواهیم کرد. شاید شما هم با این پیغام خطا روبرو شده باشید که می‌گوید: [php] mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password:...

1399/07/225298 بازدید
کلمه عبور روت MySQL؛ تنظیم، تغییر و بازگردانی
در این مطلب آموزشی، نحوه تنظیم، تغییر و بازگردانی کلمه عبور روت MySQL یا MariaDB را بررسی خواهیم کرد. شاید شما هم با این پیغام خطا روبرو شده باشید که می‌گوید:
php
mysqladmin:  connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)’
ولی وقت آن است که مشکلات مربوط به کلمه عبور MySQL را حل کنیم. با ما همراه باشید. این آموزش برای تمام توزیع‌های عمده لینوکس از جمله CentOS، دبیان، فدورا و اوبونتو مفید خواهد بود.

استفاده از فرمان mysqladmin برای تغییر کلمه  عبور روت MySQL

روش یک - تنظیم پسورد روت برای اولین بار

اگر تا به حال کلمه عبور روت MySQL را تنظیم نکرده باشید، در هنگام ارتباط به صورت روت، سرور از شما درخواست پسورد نخواهد کرد. برای تنظیم پسورد روت برای اولین بار، از فرمان mysqladmin به صورت زیر در shell استفاده کنید.
php
mysqladmin -u root password newpass
به عنوان مثال، اگر قصد دارید که کلمه عبور جدیدی به صورت 'newpass' انتخاب کنید، فرمان زیر را تایپ نمایید.
php
mysqladmin -u root -p password newpass
پسورد را وارد کنید. اگر با پیغام زیر روبرو شدید...
php
mysqladmin: connect to server at 'localhost' failederror: 'Access denied for user 'root'@'localhost' (using password: YES)'
دستورالعمل‌های زیر را برای نحوه بازیابی کلمه عبور روت MySQL دنبال کنید. کلمه 'password' در نمونه بالا جزئی از فرمان محسوب می‌شود و نباید آن را با چیز دیگری جایگزین کنید. در عین حال، 'newpass' پسورد جدید شماست. تغییر کلمه عبور روت MySQL یا MariaDB یکی از جایگزین‌های فرمان mysqladmin در هنگام تنظیم ابتدایی کلمه عبور روت MySQL یا MariaDB، استفاده از فرمان mysql_secure_installation است. این فرمان نه‌تنها پسورد قدیمی و جدید روت MySQL را درخواست می‌کند، بلکه سایر ملاحظات امنیتی مانند غیرفعال‌سازی پایگاه داده آزمایشی را نیز درنظر می‌گیرد. نحوه استفاده از این فرمان به صورت زیر است.
php
mysql_secure_installation
مطابق زیر، پاسخ سؤال‌ها را وارد کنید.
php
Change the root password? [Y/n] <-- yNew password: <-- Enter a new MySQL root passwordRe-enter new password: <-- Repeat the MySQL root passwordRemove anonymous users? [Y/n] <-- yDisallow root login remotely? [Y/n] <-- yRemove test database and access to it? [Y/n] <-- yReload privilege tables now? [Y/n] <-- y
البته پاسخ‌ها بالا به صورت پیشنهاد هستند و شما می‌توانید تنظیمات موردنظر خود را وارد کنید. مثلاً شما ممکن است ترجیح دهید که پایگاه داده آزمایشی را حفظ نمایید و یا اینکه به دسترسی ریموت کاربر روت نیاز داشته باشید. البته قطعاْ نیازی به دسترسی ریموت به استفاده از PHPMyAdmin نخواهید داشت. استفاده از mysql_secure_installation  برای تغییر کلمه عبور روت MySQL

تغییر پسورد MySQL برای کاربران دیگر

برای تغییر کلمه عبور یک کاربر عادی نیاز به فرمان زیر دارید.
php
mysqladmin -u user-name -p password newpass
متغیرهای این فرمان عبارتند از: user-name: نام کاربری که می‌خواهید تغییر پسورد را انجام دهید. newpass: پسورد جدید کلمه 'password' یک متغیر نیست و بنابراین، نباید آن را با چیز دیگری جایگزین کنید. این فرمان از شما درخواست پسورد قدیمی را می‌کند. تغییر کلمه عبور با mysqladmin

روش ۲ - بروزرسانی یا تغییر کلمه عبور

MySQL نام‌های کاربری و کلمه‌های عبور را در جدول user درون پایگاه داده MySQL ذخیره می‌کند. شما می‌توانید با استفاده از روش زیر، مستقیماً پسوردها را بروزرسانی کرده و یا تغییر دهید. ۱) به سرور MySQL وارد شوید و فرمان زیر را در shell وارد کنید.
php
mysql -u root -p
۲) از پایگاه داده mysql به صورت زیر استفاده کنید.
php
mysql> use mysql;
۳) پسورد را برای یک کاربر خاص تغییر دهید. نسخه MySQL 5.7.5 و نسخه‌های قدیمی‌تر
php
mysql> update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';
نسخه MySQL 5.7.6 و جدیدتر
php
mysql> SET PASSWORD FOR 'ENTER-USER-NAME-HERE'@'localhost' = PASSWORD("newpass");
۴) بارگذاری دسترسی‌ها
php
mysql> flush privileges;mysql> quit
در هنگام اسکریپت‌نویسی php یا Perl باید از این روش استفاده کنید.

بازیابی کلمه عبور روت MySQL

با دنبال کردن پنج مرحله ساده زیر می‌توانید پسورد یک سرور پایگاه داده MySQL را بازیابی کنید. گام ۱) توقف اجرای سرور MySQL گام ۲) اجرای دوباره سرور MySQL (mysqld) با گزینه --skip-grant-tables. در این حالت، دیگر نیازی به ارائه پسورد نخواهید داشت. گام ۳) اتصال به سرور MySQL به صورت کاربر روت. گام ۴) تنظیم یک کلمه عبور روت MySQL جدید گام ۵) خروج و راه‌اندازی دوباره سرور MySQL در اینجا فرمان‌های موردنیاز برای هر مرحله را ملاحظه می‌کنید. گام ۱) توقف اجرای سرور MySQL
php
service mysql stop
خروجی
php
Stopping MySQL database server: mysqld.
۲) اجرای دوباره سرور MySQL بدون نیاز به پسورد
php
mysqld_safe --skip-grant-tables &
خروجی
php
[1] 5988Starting mysqld daemon with databases from /var/lib/mysqlmysqld_safe[6025]: started
گام ۳) اتصال به سرور MySQL با استفاده از کلاینت MySQL
php
mysql -u root
خروجی
php
Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 56299Server version: 5.6.34-1 (Debian)Copyright © 2000, 2016, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.mysql>
گام ۴) تنظیم یک کلمه عبور روت MySQL جدید نسخه MySQL 5.7.5 و نسخه‌های قدیمی‌تر
php
mysql> use mysql;mysql> update user set password=PASSWORD(“NEW-ROOT-PASSWORD”) where User=’root’;mysql> flush privileges;mysql> quit
نسخه MySQL 5.7.6 و جدیدتر
php
mysql> use mysql;mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(“newpass”);mysql> flush privileges;mysql> quit
گام ۵) توقف سرور MySQL
php
service mysql stop
خروجی
php
Stopping MySQL database server: mysqldSTOPPING server from pid file /var/run/mysqld/mysqld.pidmysqld_safe[6186]: ended[1]+  Done                    mysqld_safe --skip-grant-tables
در صورتی که فرمان بالا نتواند MySQL را متوقف کند، از فرمان زیر استفاده کنید.
php
killall mysqld
خروجی ممکن است بسته به توزیع لینوکس متفاوت باشد. تا زمانی که پیغام خطا برایتان ظاهر نشود، جای نگرانی نخواهد بود. حالا سرور MySQL را راه‌اندازی کرده و تست کنید.
php
service mysql startmysql -u root -p

این مطلب مفید بود؟

نظر شما به بهتر شدن محتوا کمک می‌کند

5298 بازدید