Ваш пароль не відповідає чинним вимогам політики


148

Я хочу створити нового користувача в mysql із синтаксисом:

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

Але вона повертає помилку:

Ваш пароль не відповідає чинним вимогам політики.

Я спробував багато паролів, але вони не працюють. Як я можу це виправити?


1
Установіть рівень політики щодо пароля нижче. Подивіться тут: dev.mysql.com/doc/refman/5.6/uk/…
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;
ямтодор

1
Це було корисно, оскільки фактично показало мені, чому мій тривалий пароль із 30 символів був "слабким" (ніякого спеціального символу). Я зміг зняти вимогу щодо спеціальних символів та збільшити мінімальну довжину з 8 до 20.
andrewtweber

68

ПРИМІТКА. Це може бути не безпечним рішенням. Але якщо ви працюєте в тестовому середовищі, просто потрібно швидко виправити і навіть не піклуватися про налаштування безпеки. Це швидке рішення.

Та ж проблема трапилася зі мною, коли я запустив "mysql_secure_installation" і змінив рівень безпеки пароля на "середній".

Я обійшов помилку, виконавши наступні дії:

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

переконайтесь, що ви перевстановите плагін "validate_password", якщо це необхідно.


3
Страшне рішення. Ви повинні знизити рівень до того, що вам підходить, а не видаляти весь об'єкт.
Маркіз Лорн

10
дякую за публікацію швидке і брудне виправлення. як і те, що говорить @kennyut: переконайтеся, що ви перевстановите плагін "validate_password"
Менг Чжао

52

Якщо вам не байдуже, що таке політика щодо паролів. Ви можете встановити його як "LOW", видавши нижче команду mysql:

mysql> SET GLOBAL validate_password_policy=LOW;

8
має бути SET GLOBAL validate_password.policy=LOW;замість цього
пісенний


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 на НИЗКУ.

Логін як корінь

mysql -u root -p

змінити політику

SET GLOBAL validate_password_policy=LOW;

або

SET GLOBAL validate_password_policy=0;

вихід

exit

перезапустити сервіс MySQL

sudo service mysqld restart

Ви повинні змінити політику паролів MySQL на Low = 0 / Medium = 1 / High = 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;

7

На мою думку, встановити "validate_password_policy" на "низький" або видалити "плагін підтвердження пароля" - це не правильно. Ви ніколи не повинні йти на компроміс із безпекою вашої бази даних (якщо тільки вас це не цікавить). Мені цікаво, чому люди навіть пропонують ці варіанти, коли ви просто можете вибрати хороший пароль.

Щоб подолати цю проблему, я виконав таку команду в mysql: SHOW VARIABLES LIKE 'validate_password%' згідно з пропозицією @JNevill. Мій "validate_password_policy" встановлено на "Середній" разом з іншими речами. Ось скріншот його виконання: Підтвердити політику паролів

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

  • Пароль повинен бути не менше 8 символів
  • Змішана кількість справ становить 1 (принаймні 1 літера з малої літери та 1 літера з великої літери)
  • Кількість номерів - 1
  • Мінімальна кількість спеціальних символів - 1

Отже, дійсний пароль повинен підкорятися політиці. Можливо приклади дійсного пароля для вищезазначених правил:

  • Student123 @
  • NINZAcoder 100 доларів
  • demoPass # 00

Ви можете вибрати будь-яку комбінацію, якщо вона відповідає політиці.

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

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


2
Це STRONG для основної політики щодо паролів.
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

там десь ви вибрали, який тип паролю ви хочете обрати

Існує три рівні перевірки пароля:

LOW length> = 8 MEDIUM length> = 8, числовий, змішаний регістр та спеціальні символи STRONG Length> = 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',
            ],
        ],
    ],

Це зафіксувало це для мене.


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;

Але рекомендований Сильний пароль - це правильне рішення


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> SET GLOBAL validate_password.length = 6;

mysql> SET GLOBAL validate_password.number_count = 0;

mysql> SET GLOBAL validate_password.policy = НИЗКО;

ПОКАЗУЙТЕ ВАРІАБЛІСЬКІ ПОДОБНІ "validate_password%";

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


-1
mysql> SET GLOBAL validate_password.policy = 0;

1
Хоча цей код може вирішити проблему з ОП, найкраще включити пояснення щодо того, як ваш код вирішує проблему ОП. Таким чином майбутні відвідувачі можуть дізнатисясь із вашої публікації та застосувати її до власного коду. ТАК - це не програма кодування, а ресурс для знань. Крім того, швидше за все буде запрошено високу якість, повну відповідь. Ці функції, поряд з вимогою, що всі повідомлення є автономними, є деякою сильною стороною SO як платформи, що відрізняє її від форумів. Ви можете редагувати, щоб додати додаткову інформацію та / або доповнити свої пояснення джерельною документацією.
ШерілХоман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.