Mysql failed error your password does not satisfy the current policy requirements

Если вы пытались установить MySQL в новых версиях дистрибутива Ubuntu, то могли столкнутся с этой ошибкой при выполнении команды mysql_secure_installation

Если вы пытались установить MySQL в новых версиях дистрибутива Ubuntu, то могли столкнутся с этой ошибкой при выполнении команды mysql_secure_installation или при попытке сменить пароль с помощью SQL команды ALTER  USER.

В этой статье мы разберем почему возникает такая ошибка, а также как исправить Your password does not satisfy the current policy requirements MySQL в вашей системе.

Почему возникает такая ошибка?

MySQL имеет плагин для проверки сложности паролей. Он по умолчанию отключен, но при выполнении mysql_secure_installation программа предлагает его включить и включает по умолчанию, если вы явно не отказались от этого. Этот плагин проверяет сложность пароля и не дает установить слишком слабые пароли. У плагина есть три политики требований к паролям:

  • LOW — самая легкая политика, она проверяет только длину пароля. Пароль должен быть не менее восьми символов.
  • MEDIUM — эта политика используется по умолчанию. Она требует чтобы пароль был не меньше 8 символов, содержал как минимум одну цифру, одну буквы верхнего и одну нижнего регистра, а также как минимум один спец символ, например восклицательный знак, собаку, подчеркивание и т д.
  • STRONG — эта политика добавляет к правилам из MEDIUM требование, чтобы слова из которых состоит пароль не содержались в словаре.

Скрипт mysql_secure_installation спрашивает какую политику надо активировать, после того как вы включили плагин Password Validation Plugin и по умолчанию предлагается именно политика MEDIUM:

Таким образом, если вы выберете все значения по умолчанию и потом попытаетесь указать пароль, который не соответствует требованиям, например, чаще всего это будет отсутствие спец символа, то вы получите ошибку «Your password does not satisfy the current policy requirements».

Как исправить ошибку?

Самый простой способ исправить эту ошибку — это указать пароль, который будет соответствовать требованиям политики. Для политики MEDIUM это может быть такой пароль: IePhi4A!. Но это не всегда подходит. Поэтому ещё вы можете понизить политику до LOW, для того чтобы требования к паролю были не такими строгими. Для этого выполните подключитесь к серверу баз данных MySQL:

mysql -u root -p

Или если в системе выбрана авторизация не по паролю:

sudo mysql

Затем выполните такой запрос:

SET GLOBAL validate_password.policy=LOW;

После этого вы можете поменять пароль на нужный. Ещё один вариант — полностью отключить плагин валидации паролей. Для этого выполните такой SQL запрос:

UNINSTALL COMPONENT 'file://component_validate_password';

После этого валидация паролей будет полностью отключена и вы сможете установить желаемый пароль.

Выводы

В этой статье мы рассмотрели как исправить ошибку связанную с валидацией пароля MySQL. Как видите это довольно не сложно.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

As you might have noticed, you will be prompted to enable VALIDATE PASSWORD component while setting up password for MySQL root user. If enabled, the Validate Password component will automatically check the strength of the given password and enforce the users to set only the passwords that are secure enough. If you provide a weak password, you will encounter with an error like this — ERROR 1819 (HY000): Your password does not satisfy the current policy requirements.

Technically speaking, it is not actually an error. This is a built-in security mechanism that forces the users to provide only the strong passwords based on the current password policy requirements.

Let me show you an example. I log in to MySQL server as root user using command:

$ mysql -u root -p

Create a database user with a weak password:

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

And I encounter with the following error:

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

See? The Validate Password component doesn’t allow me to create a user with a weak password (i.e. mypassword in this case).

You will keep getting this error until the password meets the requirements of the current password policy or you disable the Validate Password component. We will see how to do it in the following section.

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

There are three levels of password validation policy enforced when Validate Password plugin is enabled:

  • LOW Length >= 8 characters.
  • MEDIUM Length >= 8, numeric, mixed case, and special characters.
  • STRONG Length >= 8, numeric, mixed case, special characters and dictionary file.

Based on these policy levels, you need to set an appropriate password. For example, if the password validation policy is set to Medium, you must set a password that has at least 8 characters including a number, lowercase, uppercase and special characters.

First we need to  find the current password policy level. To do so, run the following command to show Password Validation Plugin system variables:

mysql> SHOW VARIABLES LIKE 'validate_password%';

Sample output:

+--------------------------------------+--------+
| 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)
Show password validation policy in mysql
Show password validation policy in mysql

As you can see, the currently enforced password level is Medium. So our password should be 8  characters long with a number, mixed case and special characters.

I am going to set this password — Password123#@! using command:

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

See? It works now! So, in order to fix the «ERROR 1819 (HY000)...» error, you need to enter a password as per the current password validation policy.

Change password validation policy in MySQL

You can also solve the «ERROR 1819 (HY000)...» by setting up a lower level password policy.

To do so, run the following command from the mysql prompt:

mysql> SET GLOBAL validate_password.policy = 0;

Or,

mysql> SET GLOBAL validate_password.policy=LOW;

Then check if the password validation policy has been changed to low:

mysql> SHOW VARIABLES LIKE 'validate_password%';

Sample output:

+--------------------------------------+-------+
| 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)

Now you can create a user with a weak password like below:

mysql> create user 'senthil'@'localhost' identified by 'password';
Change password validation policy in mysql
Change password validation policy in mysql

To revert back to MEDIUM level policy, simply run this command from mysql prompt:

mysql> SET GLOBAL validate_password.policy=MEDIUM;

If the password policy doesn’t change, exit from the mysql prompt and restart mysql service from your Terminal window:

$ sudo systemctl restart mysql

Now it should work.

Heads Up: One of our reader has pointed out that there is typo in the following command:

mysql> SET GLOBAL validate_password.policy=LOW;

It should be:

mysql> SET GLOBAL validate_password_policy=LOW;

Note the underscore in the above command. Since I have deleted the setup, I have no way of verifying this command. But I assume the command has been changed in the newer versions of MySQL.

Disable password validation policy

If you like to create users with weak password, simply disable the Validate Password component altogether and re-enable it back after creating the users.

Log in to the MySQL server:

$ mysql -u root -p

To temporarily disable Validate Password component, run the following command from MySQL prompt:

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

Create the users with any password of your choice:

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

Finally, enable Validate Password component:

mysql> INSTALL COMPONENT "file://component_validate_password";
Disable password validation policy temporarily in mysql
Disable password validation policy temporarily in mysql

I personally don’t recommend changing the policy to lower level or disabling password policy. Be it a database user or normal user, always use a strong password with more than 8 characters including a number, mixed case, and spacial characters.

Conclusion

In this guide, we learned about one of the common MySQL error — ERROR 1819 (HY000): Your password does not satisfy the current policy requirements and how to fix it in Linux. We also learned how to disable password policy to allow weak passwords in some cases. Personally I recommend you to use a strong password.

When creating a MySQL user with a relatively weak password, you might encounter the error ‘MySQL ERROR 1819 (HY000): Your password does not satisfy the current policy requirements’. Technically, this is not an error, but a notification that you are using a password that does not meet the recommended password policy requirements.

In other words, you are using a weak password that can easily be guessed or brute-forced. The built-in security mechanism discourages users from creating weak passwords which can render your database prone to breaches.

For example, I ran into the error when creating a user as shown

mysql> create user ‘tecmint’@’localhost’ IDENTIFIED BY ‘mypassword’;

MySQL ERROR 1819 (HY000)

MySQL ERROR 1819 (HY000)

It’s a no brainer that the password is extremely weak and can present a security risk.

How to Solve MySQL ERROR 1819 (HY000) in Linux

The MySQL database ships with a validate_password plugin which when enabled, enforces a password validation policy. There are 3 levels of password validation policy that are enforced by the plugin.

  • LOW: Allows users to set a password of 8 or fewer characters.
  • MEDIUM: Allows users to set a password of 8 or fewer characters with mixed cases and special characters.
  • STRONG: Allows users to set a password that has all the attributes of a medium-level password with the inclusion of a dictionary file.

By default, the password policy is set to MEDIUM. You can confirm the password policy level, by executing the command:

$ SHOW VARIABLES LIKE 'validate_password%';

Check Mysql Password Policy

Check Mysql Password Policy

If you run the command and get the output empty set, then the plugin is not enabled yet.

To enable the validate_password plugin, run the commands below.

mysql> select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';
mysql> install plugin validate_password soname 'validate_password.so';

To confirm that the plugin is activated, run the command.

mysql> select plugin_name, plugin_status from information_schema.plugins where plugin_name like 'validate%';

You should get the output shown below:

Enable Mysql Password Policy

Enable Mysql Password Policy

To resolve the issue, you need to set the password validation policy to the lowest level. I know this sounds counterintuitive as it creates an avenue for setting weak passwords which can ultimately cause your database to be compromised by hackers.

However, if you still insist on having your way, here’s what you can do.

How to Change MySQL Password Validation Policy

To resolve the MySQL ERROR 1819 (HY000) error, set a lower password validation policy as shown.

mysql> SET GLOBAL validate_password_policy=LOW;
OR
mysql> SET GLOBAL validate_password_policy=0;

You can thereafter confirm the password validation policy level.

$ SHOW VARIABLES LIKE 'validate_password%';

Change Mysql Password Policy

Change Mysql Password Policy

Now you can proceed and assign a relatively weak password as per your wish.

mysql> create user ‘tecmint’@’localhost’ IDENTIFIED BY ‘mypassword’;

To revert to the ‘MEDIUM’ password policy level, simply invoke the command:

mysql> SET GLOBAL validate_password_policy=MEDIUM;
Conclusion

Personally, I wouldn’t recommend setting a lower level password policy for obvious reasons. Whether it’s a normal user or a database user, it’s recommended to always set a strong MySQL password with more than 8 characters with a mix of uppercase, lowercase, numeric and special characters.

This guide is for the sake of those who want to know how to navigate such an error, otherwise, setting a strong password is always recommended.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

15.12.2019

mysql-logo

На вновь установленном сервере с Oracle MySQL 5.7 при создании пользователя может возникнуть ошибка ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Давайте разберемся откуда она появилась и как её устранить.

Корень проблемы кроется в активированном по умолчанию плагине validate_password которому не нравятся даже такого рода пароли ‘Gi7he9Whugb0’, что довольно странно, ведь пароль достаточно стойкий.

Посмотрим активирован ли плагин:

mysql -u root -p
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE'validate%';
+-------------------+---------------+
 | PLUGIN_NAME       | PLUGIN_STATUS |
 +-------------------+---------------+
 | validate_password | ACTIVE        |
 +-------------------+---------------+
 1 row in set (0.01 sec)

Как мы видим, плагин активирован. Посмотрим на настройки плагина:

mysql> SHOW GLOBAL VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
 | Variable_name                        | Value  |
 +--------------------------------------+--------+
 | validate_password_check_user_name    | OFF    |
 | 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.07 sec)

Что же MySQL не понравилось в нашем пароле ?
А не понравилось то, что в соответствии с настройкой validate_password_special_char_count в пароле должен быть хотя бы один спецсимвол, например восклицательный знак (!).

Самым правильным решением будет конечно соблюдение установленных правил при генерации пароля, но если хочется немного их подправить, то давайте сделаем это:

mysql> SET GLOBAL validate_password_special_char_count = 0;

Теперь при создании пользователя проблем возникнуть не должно.

Если Вас устраивает такая политика, то не забудьте добавить в /etc/mysql/my.cnf в секцию [mysqld] настройку validate_password_special_char_count=0

sudo nano /etc/mysql/my.cnf
[mysqld] 
validate_password_special_char_count=0

Если Вы хотите, чтобы никто не смог выгрузить плагин validate_password, то в /etc/mysql/my.cnf в секцию [mysqld] нужно добавить настройку validate-password=FORCE_PLUS_PERMANENT

sudo nano /etc/mysql/my.cnf
[mysqld] 
validate-password=FORCE_PLUS_PERMANENT

Если Вы хотите отключить плагин на совсем, то набираем следующее:

mysql> UNINSTALL PLUGIN validate_password;

Для повторной активации плагина выполните:

mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';

Если есть вопросы, то пишем в комментариях.

Также можете вступить в Телеграм канал, ВКонтакте или подписаться на Twitter. Ссылки в шапке страницы.
Заранее всем спасибо!!!

Ошибка RSS: A feed could not be found at `https://obu4alka.ru/feed2`; the status code is `404` and content-type is `text/html; charset=UTF-8`

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как вы могли заметить, вам будет предложено включить компонент «VALIDATE PASSWORD» при настройке пароля пользователя root в MySQL.

Если этот параметр включен, компонент Validate Password автоматически проверяет надежность данного пароля и заставляет пользователей устанавливать только те пароли, которые являются достаточно безопасными.

Если вы введете слабый пароль, вы увидите ошибку типа “ERROR 1819 (HY000): Your password does not satisfy the current policy requirements.”

Технически говоря, это на самом деле не ошибка.

Это встроенный механизм безопасности, который уведомляет пользователей о предоставлении только надежных паролей в соответствии с требованиями текущей политики.

Позвольте мне показать вам пример.

Я захожу на сервер MySQL как пользователь root с помощью команды:

$ mysql -u root -p

Создаю  пользователя базы данных со слабым паролем:

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

И я сталкиваюсь со следующей ошибкой:

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

Компоненты Validate Password не позволяют мне создать пользователя со слабым паролем (т. е. mypassword в этом случае).

Вы будете получать эту ошибку до тех пор, пока пароль не будет соответствовать требованиям текущей политики паролей или вы не отключите компонент проверки.

Давайте рассмотрим, как это сделать.

Фиксим ошибку

Существует три уровня политики проверки пароля, которые применяются при включении Validate Password:

  • LOW Length >= 8 символов.
  • MEDIUM Length >= 8,  числа, смешанный регистр и специальные символы.
  • STRONG Length >= 8, числа, смешанный регистр и специальные символы и файл словаря.

На основании этих уровней политики вам необходимо установить соответствующий пароль.

Например, если для политики проверки пароля установлено значение Medium необходимо установить пароль, который должен содержать не менее 8 символов, включая цифры, строчные, прописные и специальные символы.

Сначала нам нужно найти текущий уровень политики паролей.

Для этого выполните следующую команду, чтобы показать системные переменные плагина проверки пароля:

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)

Как видите, в настоящее время установленный уровень пароля – MEDIUM.

Таким образом, наш пароль должен быть длиной 8 символов с цифрами, смешанным регистром и специальными символами.

Я собираюсь установить этот пароль – Password123#@! используя команду:

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

Как видите теперь ошибка не появляется.

Понравилась статья? Поделить с друзьями:
  • Mysql error you have an error in your sql syntax error
  • Mysql error while reading greeting packet
  • Mysql error unknown variable sql mode
  • Mysql error the table is full
  • Mysql error safe update mode