На вновь установленном сервере с 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';
На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Профессионально занимаюсь системным администрированием Linux -серверов и баз данных (MySQL, POstgreSQL) на протяжении последних 24 лет.
Спасибо помогло!
Спасибо.
Thanks a lot!
Респект
Спасибо большое! Выручили!
спасибо!
Спасибо за информацию!
спасибо огромное
Вы вкурсе, что вы крутой чувак вообще?
Догадываюсь, Boris ;)
вау спасибо админу успехов тебе
Вот супер, текста на страницу, а все что надо есть!
Спасибо.
НЕ ПОМОГЛО(((
Вероятно, что Вы что-то делали не так.
Спасибо большое, Михаил! С Вашей помощью решил проблему! Удачи!
Спасибо чувак, помогло, дай бог тебе здоровье
Хочу пароль поставить два знака, не даёт, ставит в любом случае 3. Пришлось UNINSTALL . Ваша статья самая понятная на эту тему, спасибо. ))
Странные дела.
Команда : SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE ‘validate%’;
Выдает Empty set.
А SHOW GLOBAL VARIABLES LIKE ‘validate_password%’;
выдает таблицу со значениями
А Вы уверены что у Вас Oracle MySQL 5.7.x ?
Может У Вас MariaDB или MySQL 8 или Percona Server for MySQL ?
Большое-еее спасибо!
Спасибо огромное! Долго мучился с данной ошибкой mySQL…