ممکن است متوجه شده باشید که هنگام تنظیم پسورد برای کاربر root در MySQL، باید گزینه “VALIDATE PASSWORD” را فعال کنید. در صورت فعال بودن، مؤلفه Validate Password به طور خودکار قوی بودن پسورد داده شده را بررسی کرده و کاربران وادار می‌نماید که تنها رمزهای عبوری را که به اندازه کافی ایمن هستند، تنظیم نمایند.

 

در این صورت، اگر پسورد ضعیفی را ارائه دهید، با خطایی مشابه خطای نشان داده شده در شکل زیر روبه‌رو می‌شوید. از نظر فنی، در واقع این، یک خطا نیست. بلکه، یک مکانیسم امنیتی داخلی MySQL است که به کاربران اطلاع می‌دهد، بر اساس الزامات سیاست فعلی رمز عبور، تنها پسوردهای قوی انتخاب نمایند.

 

این مطلب نیز ممکن است برای شما مفید باشد: رفع خطای 2003 (HY000): Can’t connect to MySQL server on ‘127.0.0.1’ (111)

 

به عنوان مثال، سناریوی زیر را در نظر بگیرید:

با استفاده از دستور زیر، به عنوان کاربر root، به سرور MySQL وارد شوید:

$ mysql -u root -p

سعی کنید، با یک رمز عبور ضعیف، یک کاربر پایگاه‌داده ایجاد نمایید:

mysql> create user 'ostechnix'@'localhost' identified by 'mypassword';

اکنون، با خطای زیر روبرو خواهید شد:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

 

دلیل روبه‌رو شدن با این خطا این است که مؤلفه‌های Validate Password به شما اجازه نمی‌دهد، یک کاربر با رمز عبور ضعیف (در این مثال: mypassword) ایجاد نمایید. این خطا، تا زمانی که پسورد انتخابی، الزامات سیاست فعلی رمز عبور را برآورده نساخته؛ یا تا زمانی که مؤلفه Validate Password غیرفعال نشده است، ادامه خواهد داشت. در ادامه، نحوه رفع این خطا شرح داده شده است.

 

رفع خطای "Your password does not satisfy the current policy requirements"

هنگام فعال کردن گزینه “Validate Password”، سه سطح سیاست برای اعتبار سنجی پسورد وجود دارد:

LOW: تعداد کاراکترها >= 8 کاراکتر

MEDIUM: طول کاراکتر >= 8 کاراکتر و شامل عدد، حروف کوچک، حروف بزرگ و کاراکترهای خاص

STRONG: طول کاراکتر >= 8 کاراکتر و شامل عدد، حروف کوچک، حروف بزرگ، کاراکترهای خاص و فایل دیکشنری

بر اساس این سطوح، شما باید یک رمز عبور مناسب تنظیم کنید. به عنوان مثال، اگر سیاست اعتبار سنجی رمز عبور برروی Medium تنظیم شده باشد، باید پسوردی را انتخاب نمایید که حداقل 8 کاراکتر؛ شامل عدد، حروف کوچک، حروف بزرگ و کاراکترهای ویژه باشد.

 

این مطلب نیز ممکن است برای شما مفید باشد: نکات مفید برای رفع خطاهای رایج در MySQL

 

در ابتدای کار، برای رفع این خطا، باید سطح رمز عبور فعلی را بدانید. بدین منظور، دستور زیر را اجرا نمایید؛ تا متغیرهای مربوط به افزونه اعتبار سنجی رمز عبور را مشاهده کنید:

mysql> SHOW VARIABLES LIKE 'validate_password%';

در این صورت، خروجی به صورت زیر خواهد بود:

+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.09 sec)

 

همانطور که مشاهده می‌کنید، سطح رمز عبور کنونی برروی سطح متوسط تنظیم شده است. بنابراین، رمز عبور ما باید 8 کاراکتر؛ شامل عدد، حروف بزرگ و کوچک و کاراکترهای خاص باشد.

با فرض اینکه می‌خواهید، پسورد Password123#@! را تنظیم نمایید؛ باید از دستور زیر استفاده کنید:

mysql> create user 'ostechnix'@'localhost' identified by 'Password123#@!';
Query OK, 0 rows affected (0.36 sec)

 

بنابراین، همانطور که مشاهده نمودید، برای رفع خطای "ERROR 1819 (HY000)" کافیست، یک رمز عبور مطابق با سیاست اعتبار سنجی پسورد فعلی وارد کنید.

 

تغییر سیاست اعتبار سنجی پسورد

شما همچنین می‌توانید خطای "ERROR 1819 (HY000)" را با تنظیم یک سیاست پسورد سطح پایین‌تر حل کنید.

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

mysql> SET GLOBAL validate_password.policy = 0;

یا از دستور زیر استفاده کنید،

mysql> SET GLOBAL validate_password.policy=LOW;

 

سپس بررسی کنید که آیا سیاست اعتبار سنجی پسورد به سطح پایین تغییر یافته است؛ یا خیر:

mysql> SHOW VARIABLES LIKE 'validate_password%';

در این صورت، خروجی به صورت زیر خواهد بود:

+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 8     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 1     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.00 sec)

 

این مطلب نیز ممکن است برای شما مفید باشد: برطرف کردن خطای MySQL is running but PID file could not be found

 

اکنون می‌توانید، یک کاربر با پسورد ضعیف، مانند زیر ایجاد کنید:

mysql> create user 'senthil'@'localhost' identified by 'password';

 

برای بازگشت بهسطح سیاست متوسط کافیست، دستور زیر را در mysql اجرا نمایید:

mysql> SET GLOBAL validate_password.policy=MEDIUM;

اگر سطح پسورد تغییر نکرده بود، از خط فرمان mysql خارج شده و سرویس mysql را از پنجره ترمینال خود مجدداً راه اندازی کنید:

$ sudo systemctl restart mysql

اکنون باید خطا رفع شده باشد.

 

غیرفعال سازی سیاست اعتبار سنجی پسورد

اگر می‌خواهید، کاربرانی با سطح رمز عبور ضعیف ایجاد نمایید، کافیست مؤلفه Validate Password را غیرفعال کزده و سپس، بعد از ایجاد آن کاربران، مجدداً آن را فعال نمایید. بدین منظور، مراحل زیر را دنبال کنید:

وارد سرور MySQL شوید:

$ mysql -u root -p

به منظور غیرفعال کردن موقت مؤلفه Validate Password، دستور زیر را در خط فرمان mysql اجرا کنید:

mysql> UNINSTALL COMPONENT "file://component_validate_password";

کاربران را با رمز عبور دلخواه خود ایجاد نمایید:

mysql> create user 'kumar'@'localhost' identified by '123456';

در آخر، مجدداً مؤلفه Validate Password را فعال کنید:

mysql> INSTALL COMPONENT "file://component_validate_password";

 

دقت نمایید که تغییر خط مشی به سطح پایین یا غیرفعال کردن آن توصیه نمی‌شود. بنابراین بهتر است، از یک پسورد قوی با بیش از 8 کاراکتر؛ شامل، اعداد، حروف کوچک، حروف بزرگ و کاراکترهای خاص استفاده نمایید.

 

 

 

منبع:

ostechnix