بلاگ/کلمه عبور روت 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 یا MariaDB را بررسی خواهیم کرد. شاید شما هم با این پیغام خطا روبرو شده باشید که میگوید:
php
1mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: YES)’
ولی وقت آن است که مشکلات مربوط به کلمه عبور MySQL را حل کنیم. با ما همراه باشید. این آموزش برای تمام توزیعهای عمده لینوکس از جمله CentOS، دبیان، فدورا و اوبونتو مفید خواهد بود.
استفاده از فرمان mysqladmin برای تغییر کلمه عبور روت MySQL
روش یک - تنظیم پسورد روت برای اولین بار
اگر تا به حال کلمه عبور روت MySQL را تنظیم نکرده باشید، در هنگام ارتباط به صورت روت، سرور از شما درخواست پسورد نخواهد کرد. برای تنظیم پسورد روت برای اولین بار، از فرمان mysqladmin به صورت زیر در shell استفاده کنید.
php
1mysqladmin -u root password newpass
به عنوان مثال، اگر قصد دارید که کلمه عبور جدیدی به صورت 'newpass' انتخاب کنید، فرمان زیر را تایپ نمایید.
php
1mysqladmin -u root -p password newpass
پسورد را وارد کنید. اگر با پیغام زیر روبرو شدید...
php
1mysqladmin: connect to server at 'localhost' failed23error: 'Access denied for user 'root'@'localhost' (using password: YES)'
دستورالعملهای زیر را برای نحوه بازیابی کلمه عبور روت MySQL دنبال کنید.
کلمه 'password' در نمونه بالا جزئی از فرمان محسوب میشود و نباید آن را با چیز دیگری جایگزین کنید. در عین حال، 'newpass' پسورد جدید شماست.
یکی از جایگزینهای فرمان mysqladmin در هنگام تنظیم ابتدایی کلمه عبور روت MySQL یا MariaDB، استفاده از فرمان mysql_secure_installation است. این فرمان نهتنها پسورد قدیمی و جدید روت MySQL را درخواست میکند، بلکه سایر ملاحظات امنیتی مانند غیرفعالسازی پایگاه داده آزمایشی را نیز درنظر میگیرد.
نحوه استفاده از این فرمان به صورت زیر است.
php
1mysql_secure_installation
مطابق زیر، پاسخ سؤالها را وارد کنید.
php
1Change the root password? [Y/n] <-- y23New password: <-- Enter a new MySQL root password45Re-enter new password: <-- Repeat the MySQL root password67Remove anonymous users? [Y/n] <-- y89Disallow root login remotely? [Y/n] <-- y1011Remove test database and access to it? [Y/n] <-- y1213Reload privilege tables now? [Y/n] <-- y
البته پاسخها بالا به صورت پیشنهاد هستند و شما میتوانید تنظیمات موردنظر خود را وارد کنید. مثلاً شما ممکن است ترجیح دهید که پایگاه داده آزمایشی را حفظ نمایید و یا اینکه به دسترسی ریموت کاربر روت نیاز داشته باشید. البته قطعاْ نیازی به دسترسی ریموت به استفاده از PHPMyAdmin نخواهید داشت.
تغییر پسورد MySQL برای کاربران دیگر
برای تغییر کلمه عبور یک کاربر عادی نیاز به فرمان زیر دارید.
php
1mysqladmin -u user-name -p password newpass
متغیرهای این فرمان عبارتند از:
user-name: نام کاربری که میخواهید تغییر پسورد را انجام دهید.
newpass: پسورد جدید
کلمه 'password' یک متغیر نیست و بنابراین، نباید آن را با چیز دیگری جایگزین کنید. این فرمان از شما درخواست پسورد قدیمی را میکند.
روش ۲ - بروزرسانی یا تغییر کلمه عبور
MySQL نامهای کاربری و کلمههای عبور را در جدول user درون پایگاه داده MySQL ذخیره میکند. شما میتوانید با استفاده از روش زیر، مستقیماً پسوردها را بروزرسانی کرده و یا تغییر دهید.
۱) به سرور MySQL وارد شوید و فرمان زیر را در shell وارد کنید.
php
1mysql -u root -p
۲) از پایگاه داده mysql به صورت زیر استفاده کنید.
php
1mysql> use mysql;
۳) پسورد را برای یک کاربر خاص تغییر دهید.
نسخه MySQL 5.7.5 و نسخههای قدیمیتر
php
1mysql> update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';
نسخه MySQL 5.7.6 و جدیدتر
php
1mysql> SET PASSWORD FOR 'ENTER-USER-NAME-HERE'@'localhost' = PASSWORD("newpass");
۴) بارگذاری دسترسیها
php
1mysql> flush privileges;23mysql> quit
در هنگام اسکریپتنویسی php یا Perl باید از این روش استفاده کنید.
بازیابی کلمه عبور روت MySQL
با دنبال کردن پنج مرحله ساده زیر میتوانید پسورد یک سرور پایگاه داده MySQL را بازیابی کنید.
گام ۱) توقف اجرای سرور MySQL
گام ۲) اجرای دوباره سرور MySQL (mysqld) با گزینه --skip-grant-tables. در این حالت، دیگر نیازی به ارائه پسورد نخواهید داشت.
گام ۳) اتصال به سرور MySQL به صورت کاربر روت.
گام ۴) تنظیم یک کلمه عبور روت MySQL جدید
گام ۵) خروج و راهاندازی دوباره سرور MySQL
در اینجا فرمانهای موردنیاز برای هر مرحله را ملاحظه میکنید.
گام ۱) توقف اجرای سرور MySQL
php
1service mysql stop
خروجی
php
1Stopping MySQL database server: mysqld.
۲) اجرای دوباره سرور MySQL بدون نیاز به پسورد
php
1mysqld_safe --skip-grant-tables &
خروجی
php
1[1] 598823Starting mysqld daemon with databases from /var/lib/mysql45mysqld_safe[6025]: started
گام ۳) اتصال به سرور MySQL با استفاده از کلاینت MySQL
گام ۴) تنظیم یک کلمه عبور روت MySQL جدید
نسخه MySQL 5.7.5 و نسخههای قدیمیتر
php
1mysql> use mysql;23mysql> update user set password=PASSWORD(“NEW-ROOT-PASSWORD”) where User=’root’;45mysql> flush privileges;67mysql> quit
نسخه MySQL 5.7.6 و جدیدتر
php
1mysql> use mysql;23mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(“newpass”);45mysql> flush privileges;67mysql> quit
گام ۵) توقف سرور MySQL
php
1service mysql stop
خروجی
php
1Stopping MySQL database server: mysqld23STOPPING server from pid file /var/run/mysqld/mysqld.pid45mysqld_safe[6186]: ended67[1]+ Done mysqld_safe --skip-grant-tables
در صورتی که فرمان بالا نتواند MySQL را متوقف کند، از فرمان زیر استفاده کنید.
php
1killall mysqld
خروجی ممکن است بسته به توزیع لینوکس متفاوت باشد. تا زمانی که پیغام خطا برایتان ظاهر نشود، جای نگرانی نخواهد بود. حالا سرور MySQL را راهاندازی کرده و تست کنید.