На вновь установленном сервере с 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';

[endtxt]

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

5 1 голос
Рейтинг статьи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов cookie) с использованием трекеров "Google Analytics" и "Yandex.Metrics". Порядок обработки Ваших персональных данных, а также реализуемые требования к их защите, содержатся в Политике конфиденциальности.
Принять