Решение проблемы в MySQL — ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

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

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

Исходные данные: Oracle MySQL 5.7.21;
Задача: Разрешить проблему с ошибкой ERROR 1819 (HY000): Your password does not satisfy the current policy requirements;

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

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

# 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.00 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.00 sec)

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

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

mysql> SET GLOBAL validate_password_special_char_count = 0;
Query OK, 0 rows affected (0.00 sec)

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

mysql> CREATE USER 'test1'@'localhost' IDENTIFIED BY 'ei7veeChu4bo';
Query OK, 0 rows affected (0.00 sec)

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

[mysqld]
validate_password_special_char_count=0

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

[mysqld]
validate-password=FORCE_PLUS_PERMANENT

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

mysql> UNINSTALL PLUGIN validate_password;

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

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

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