Ваш пароль не соответствует требованиям текущей политики

148

Я хочу создать нового пользователя в MySQL с синтаксисом:

create user 'demo'@'localhost' identified by 'password';

Но он возвращает ошибку:

Ваш пароль не соответствует требованиям текущей политики.

Я пробовал много паролей, но они не работают. Как я могу это исправить?

Нгуен
источник
1
Установите уровень политики паролей ниже. Посмотрите здесь: dev.mysql.com/doc/refman/5.6/en/...
Fjarlaegur
4
Как настроена ваша политика паролей? Вы можете проверить переменные, которые были установлены для вашего модуля проверки пароля, используяSHOW VARIABLES LIKE 'validate_password%'
JNevill
Спасибо! Я установил уровень политики паролей ниже, и он работает.
Нгуен
1
Я решил свою проблему, используяUNINSTALL COMPONENT 'file://component_validate_password';
princebillyGK

Ответы:

245

Из-за вашего пароля. Вы можете увидеть параметры конфигурации проверки пароля с помощью следующего запроса в клиенте MySQL:

SHOW VARIABLES LIKE 'validate_password%';

Вывод должен быть примерно таким:

+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 6     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 1     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 1     |
+--------------------------------------+-------+

тогда вы можете установить уровень политики паролей ниже, например:

SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;

Проверьте документацию MySQL .

Хунг Нгуен
источник
31
Ради всего святого, вам следует привести официальную документацию по MySQL , а не видео с YouTube.
маркиз Лорн
26
Используйте следующую команду, чтобы использовать «пароль» в качестве пароля для машины разработки:SET GLOBAL validate_password_policy = 0;
Махмудул Хасан Шохаг
4
SET GLOBAL validate_password.length = 6; SET GLOBAL validate_password.number_count = 0; ОБНОВЛЕНО !!
BeatingBytes
6
это просто скорееSET GLOBAL validate_password.policy = 0;
iamtodor
1
Это было полезно, потому что на самом деле показывало, почему мой 30-значный длинный пароль был «слабым» (без специальных символов). Мне удалось убрать требование специального символа и увеличить минимальную длину с 8 до 20.
andrewtweber
68

ПРИМЕЧАНИЕ. Возможно, это не безопасное решение. Но если вы работаете в тестовой среде, просто нужно быстро исправить и даже не заботиться о настройках безопасности. Это быстрое решение.

Та же проблема произошла со мной, когда я запустил «mysql_secure_installation» и изменил уровень безопасности пароля на «средний».

Я обошел ошибку, выполнив следующее:

mysql -h localhost -u root -p
mysql>uninstall plugin validate_password;

убедитесь, что вы переустановили плагин "validate_password", если это необходимо.

kennyut
источник
3
Ужасное решение. Вы должны понизить уровень до того, что вам подходит, а не удалять весь объект.
маркиз Лорн
10
спасибо за публикацию. быстрое и грязное исправление. точно так же, как говорит @kennyut: убедитесь, что вы переустановили плагин «validate_password»
Мэн Чжао
52

Если вам все равно, что такое политика паролей. Вы можете установить его на LOW, выполнив команду mysql:

mysql> SET GLOBAL validate_password_policy=LOW;
Singh
источник
8
должно быть SET GLOBAL validate_password.policy=LOW;вместо этого
songyy
20

После запуска команды sudo mysql_secure_installation.

  1. Запустите, sudo mysqlчтобы войти в приглашение mysql.
  2. Запустите это, SELECT user,authentication_string,plugin,host FROM mysql.user;чтобы проверить, чтобы пользователь root имел плагин auth_socket .
  3. Затем запустите uninstall plugin validate_password;команду, чтобы удалить привилегии перед запуском этого. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';Обязательно смените пароль на надежный пароль.

ПРИМЕЧАНИЕ: проверьте эту ссылку https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04 для получения дополнительной помощи

Лео Сэмми
источник
11

Вы должны изменить политику паролей MySQL на LOW.

войти как root

mysql -u root -p

изменить политику

SET GLOBAL validate_password_policy=LOW;

или

SET GLOBAL validate_password_policy=0;

выход

exit

перезапустить службу MySQL

sudo service mysqld restart

Вы должны изменить политику паролей MySQL на Низкий = 0 / Средний = 1 / Высокий = 2.

SET GLOBAL validate_password_policy=0;
SET GLOBAL validate_password_policy=1;    
SET GLOBAL validate_password_policy=2;
Ручира
источник
8

Для MySql 8 вы можете использовать следующий скрипт:

SET GLOBAL validate_password.LENGTH = 4;
SET GLOBAL validate_password.policy = 0;
SET GLOBAL validate_password.mixed_case_count = 0;
SET GLOBAL validate_password.number_count = 0;
SET GLOBAL validate_password.special_char_count = 0;
SET GLOBAL validate_password.check_user_name = 0;
ALTER USER 'user'@'localhost' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
Javasick
источник
7

На мой взгляд, установка «validate_password_policy» на «низкий» или удаление «плагина проверки пароля» - неправильный поступок. Вы никогда не должны идти на компромисс с безопасностью своей базы данных (если вас это не волнует). Мне интересно, почему люди даже предлагают эти варианты, когда вы просто можете выбрать хороший пароль.

Чтобы преодолеть эту проблему, я выполнил следующую команду в mysql: ПОКАЗАТЬ ПЕРЕМЕННЫЕ, КАК 'validate_password%', как было предложено @JNevill. Мой "validate_password_policy" был установлен на средний, наряду с другими вещами. Вот скриншот его выполнения: Проверить политику паролей

Результат говорит сам за себя. Для действительного пароля (если для политики паролей установлено значение medium):

  • Пароль должен содержать не менее 8 символов
  • Смешанное число регистров равно 1 (как минимум 1 буква маленьким и 1 буква заглавными буквами)
  • Количество номеров равно 1
  • Минимальное количество специальных символов составляет 1

Таким образом, действительный пароль должен подчиняться политике. Примеры действительного пароля для приведенных выше правил могут быть:

  • Student123 @
  • NINZAcoder $ 100
  • demoPass # 00

Вы можете выбрать любую комбинацию, если она соответствует политике.

Для других «validate_password_policy» вы можете просто посмотреть значения для разных опций и соответственно выбрать свой пароль (я не пробовал для «STRONG» ).

https://dev.mysql.com/doc/refman/5.6/en/validate-password-options-variables.html

Хариш Кумар Сайни
источник
2
Это СИЛЬНО для топ политики паролей.
Steam gamer
Я также не понимаю людей , предполагающие понизить validate_password_policyдо LOW. Пользователи могут идеально создать или сгенерировать надежный пароль, отвечающий требованиям. Если вы не знаете, как это сделать, воспользуйтесь для этого инструментом. Например, github.com/joseluisq/rpasswd
joseluisq
3

Шаг 1: проверьте ваш плагин аутентификации по умолчанию

SHOW VARIABLES LIKE 'default_authentication_plugin';

Шаг 2: определение требований к проверке пароля

SHOW VARIABLES LIKE 'validate_password%';

Шаг 3: настройте вашего пользователя с правильными требованиями к паролю

CREATE USER '<your_user>'@'localhost' IDENTIFIED WITH '<your_default_auth_plugin>' BY 'password';
ороков
источник
3

У меня была та же проблема, и ответ прямо перед вами, помните, когда вы запускали скрипт при установке mysql, как

sudo mysql_secure_installation

где-то там вы выбрали, какой тип пароля вы хотите выбрать

Существует три уровня политики проверки пароля:

НИЗКАЯ длина> = 8 СРЕДНЯЯ длина> = 8, числовые, смешанный регистр и специальные символы СИЛЬНАЯ Длина> = 8, числовые, смешанный регистр, специальные символы и файл словаря

Введите 0 = НИЗКИЙ, 1 = СРЕДНИЙ и 2 = СИЛЬНЫЙ:

Вы должны дать пароль к той же политике

Вот несколько примеров для ваших паролей:
для типа 0: abcdabcd
для типа 1: abcd1234
для типа 2:ancd@1234

Анураг Саху
источник
2

Для пользователей Laravel, имеющих эту проблему с MySQL 8.0.x, добавьте

'modes'=> [
             'ONLY_FULL_GROUP_BY',
             'STRICT_TRANS_TABLES',
             'NO_ZERO_IN_DATE',
             'NO_ZERO_DATE',
             'ERROR_FOR_DIVISION_BY_ZERO',
             'NO_ENGINE_SUBSTITUTION',
            ],

в ваш файл database.php, как показано ниже:

// database.php

    'connections' => [

        'mysql' => [
            'driver'      => 'mysql',
            'host'        => env( 'DB_HOST', '127.0.0.1' ),
            'port'        => env( 'DB_PORT', '3306' ),
            'database'    => env( 'DB_DATABASE', 'forge' ),
            'username'    => env( 'DB_USERNAME', 'forge' ),
            'password'    => env( 'DB_PASSWORD', '' ),
            'unix_socket' => env( 'DB_SOCKET', '' ),
            'charset'     => 'utf8mb4',
            'collation'   => 'utf8mb4_unicode_ci',
            'prefix'      => '',
            'strict'      => true,
            'engine'      => null,
            'modes'       => [
                'ONLY_FULL_GROUP_BY',
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_ENGINE_SUBSTITUTION',
            ],
        ],
    ],

Это исправило это для меня.

Jekayode
источник
2

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

Вы можете просто увидеть матрицу конфигурации проверки пароля, введя код ниже.

mysql-> SHOW VARIABLES LIKE 'validate_password%';

Затем в своей матрице вы можете найти ниже переменные с соответствующими значениями, и там вы должны проверить validate_password_length, validate_password_number_countи validate_password_policy.

Проверьте значения, используемые для этих переменных. Убедитесь, что ваше значение validate_password_lengthне должно быть больше 6. Вы можете установить это значение на 6, используя приведенный ниже код.

SET GLOBAL validate_password_length = 6;

И после этого вам нужно установить validate_password_number_countна 0. Сделайте это с помощью приведенного ниже кода.

SET GLOBAL validate_password_number_count = 0;

Наконец , вы должны установить вас validate_password_policyна low. Наличие этого как Mediumили не Highпозволит ваши менее безопасные пароли. Установите это с lowпомощью кода ниже.

SET GLOBAL validate_password_policy=LOW;
Душан
источник
1

Установите пароль, который удовлетворяет 7 правилам проверки MySql

например:- d_VX>N("xn_BrD2y

Упростив критерии проверки, вы решите проблему.

SET GLOBAL validate_password_length = 6;
SET GLOBAL validate_password_number_count = 0;

Но рекомендуемый надежный пароль - правильное решение

mujuonly
источник
0

Это сообщение об ошибке не имеет ничего общего с сохраненным паролем в вашей таблице. Это также происходит, если вы набираете (на консоли SQL)

"выберите пароль ('123456789')"

или если

«Выберите пароль (« A123456789 »)»

или если

"выберите пароль ('A! 123456789')"

Если вы печатаете

"выберите пароль ('A! a123456789')"

тогда это будет работать. Просто используйте большие + маленькие буквы, специальные символы и цифры, чтобы создать свой пароль.

Вы можете отключить эти проверки в my.cnf, но тогда возникнет угроза безопасности!

в [mysqld] добавить:

validate_password_policy=LOW
validate_password_special_char_count=0
validate_password_length=0
validate_password_mixed_case_count=0
validate_password_number_count=0
Тино Беллманн
источник
0

у меня не работала новая версия mysqld для ubuntu, пришлось добавить это в /etc/mysql/mysql.conf.d/mysqld.cnf, иначе сервер не запустится (возможно, плагин не загрузился на самое время, когда я просто добавил его без директивы plugin-load-add)

plugin-load-add=validate_password.so
validate_password_policy=LOW
validate_password_length=8
validate_password_mixed_case_count=0
validate_password_number_count=0
validate_password_special_char_count=0
Клаус
источник
0

Бывают моменты, когда найти быстрое решение - это здорово. Но если вы сможете избежать снижения ограничений на пароли, это избавит вас от головной боли в будущем.

Следующая ссылка взята из официальной документации https://dev.mysql.com/doc/refman/5.6/en/validate-password.html , где они раскрывают пример, подобный вашему, и решают его.

Единственная проблема, с которой вы столкнулись, заключается в том, что ваш пароль недостаточно надежен, чтобы соответствовать действительной минимальной политике (не рекомендуется удалять). Таким образом, вы можете попробовать разные пароли, как показано в примере.

Кристиан
источник
0

ПОКАЗАТЬ ПЕРЕМЕННЫЕ, КАК 'validate_password%';

введите описание изображения здесь

mysql> УСТАНОВИТЬ ГЛОБАЛЬНЫЙ validate_password.length = 6;

mysql> SET GLOBAL validate_password.number_count = 0;

mysql> SET GLOBAL validate_password.policy = LOW;

ПОКАЗАТЬ ПЕРЕМЕННЫЕ, КАК 'validate_password%';

введите описание изображения здесь

Хизлан Эрпак
источник
-1
mysql> SET GLOBAL validate_password.policy = 0;
CollinsKe
источник
1
Хотя этот код может решить проблему OP, лучше всего включить объяснение того, как ваш код решает проблему OP. Таким образом, будущие посетители могут учиться на вашем посте и применять его к своему коду. SO - это не сервис кодирования, а ресурс для знаний. Кроме того, высокое качество, полные ответы, скорее всего, будут проголосованы. Эти функции, наряду с требованием, чтобы все сообщения были автономными, являются одними из сильных сторон SO как платформы, которая отличает ее от форумов. Вы можете редактировать, чтобы добавить дополнительную информацию и / или дополнить ваши пояснения исходной документацией.
Шерил Хохман