Spec-Zone.ru › MySQL 8.4

8.4.3.2 Параметры и переменные проверки паролей

В этом разделе описываются системные и статусные переменные, которые validate_password предоставляет для настройки и мониторинга его работы.

  • Системные переменные компонента проверки паролей

  • Статусные переменные компонента проверки паролей

  • Параметры плагина проверки паролей

  • Системные переменные плагина проверки паролей

  • Статусные переменные плагина проверки паролей

Переменные системы компонента проверки паролей

Если компонент validate_password включён, он предоставляет несколько системных переменных, которые позволяют настроить проверку паролей:

mysql> SHOW VARIABLES LIKE 'validate_password.%';
+-------------------------------------------------+--------+
| Variable_name                                   | Value  |
+-------------------------------------------------+--------+
| validate_password.changed_characters_percentage | 0      |
| validate_password.check_user_name               | ON     |
| 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      |
+-------------------------------------------------+--------+

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

  • Процент изменённых символов

    Формат командной строки --validate-password.changed-characters-percentage[=value]
    Системная переменная validate_password.changed_characters_percentage
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 100

    Указывает минимальное количество символов в пароле, как процент от всех символов, которое пользователь должен изменить, прежде чем validate_password примет новый пароль для учётной записи пользователя. Это применяется только при изменении существующего пароля и не влияет при установке начального пароля учётной записи пользователя.

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

    По умолчанию validate_password.changed_characters_percentage разрешает повторное использование всех символов из текущего пароля в новом пароле. Диапазон допустимых процентов от 0 до 100. Если значение установлено на 100 процентов, все символы из текущего пароля отклоняются, независимо от регистра. Символы 'abc' и 'ABC' считаются одинаковыми. Если validate_password отклоняет новый пароль, сообщается об ошибке, указывающей на минимальное количество отличающихся символов.

    Если оператор ALTER USER не предоставляет существующий пароль в предложении REPLACE, эта переменная не применяется. Требование предложения REPLACE зависит от политики проверки паролей для данной учётной записи. Обзор политики см. в разделе Политика проверки паролей.

  • Проверять имя пользователя

    Формат командной строки --validate-password.check-user-name[={OFF|ON}]
    Системная переменная validate_password.check_user_name
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Булево
    Значение по умолчанию ON

    Определяет, сравнивает ли validate_password пароли с частью имени пользователя эффективной учётной записи пользователя для текущего сеанса и отклоняет их, если они совпадают. Эта переменная недоступна, если не установлен validate_password.

    По умолчанию validate_password.check_user_name включён. Эта переменная управляет сопоставлением имён пользователей независимо от значения validate_password.policy.

    Когда validate_password.check_user_name включён, это имеет следующие последствия:

    • Проверка происходит во всех контекстах, в которых вызывается validate_password, включая использование операторов, таких как ALTER USER или SET PASSWORD для изменения пароля текущего пользователя, и вызов функций, таких как VALIDATE_PASSWORD_STRENGTH().

    • Имена пользователей, используемые для сравнения, берутся из значений функций USER() и CURRENT_USER() для текущего сеанса. Это означает, что пользователь с достаточными привилегиями для установки пароля другому пользователю может установить пароль равным имени этого пользователя, и не может установить пароль этому пользователю с именем пользователя, выполняющего оператор. Например, 'root'@'localhost' может установить пароль для 'jeffrey'@'localhost' на 'jeffrey', но не может установить пароль на 'root.

    • Используется только часть имени пользователя значений функций USER() и CURRENT_USER(), а не имя хоста. Если имя пользователя пустое, сравнение не происходит.

    • Если пароль совпадает с именем пользователя или его обратным значением, происходит совпадение и пароль отклоняется.

    • Сопоставление имён пользователей регистрозависимо. Пароль и имя пользователя сравниваются как двоичные строки на байтовую основу.

    • Если пароль совпадает с именем пользователя, VALIDATE_PASSWORD_STRENGTH() возвращает 0 независимо от настроек других системных переменных validate_password.

  • Файл словаря

    Формат командной строки --validate-password.dictionary-file=file_name
    Системная переменная validate_password.dictionary_file
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Имя файла

    Путь к файлу словаря, который validate_password использует для проверки паролей. Эта переменная недоступна, если не установлен validate_password.

    По умолчанию значение этой переменной пустое, и проверки по словарю не выполняются. Для выполнения проверок по словарю значение переменной должно быть непустым. Если файл указан относительным путём, он интерпретируется относительно каталога данных сервера. Содержимое файла должно быть в нижнем регистре, по одному слову в строке. Содержимое обрабатывается как имеющее кодировку символов utf8mb3. Максимальный размер файла составляет 1 МБ.

    Для использования файла словаря при проверке паролей политика паролей должна быть установлена в 2 (STRONG); см. описание системной переменной validate_password.policy. При условии, что это так, каждая подстрока пароля длиной от 4 до 100 символов сравнивается со словами в файле словаря. Любое совпадение приводит к отклонению пароля. Сравнения не регистрозависимые.

    Для VALIDATE_PASSWORD_STRENGTH() пароль проверяется по всем политикам, включая STRONG, поэтому оценка силы включает проверку словаря независимо от значения validate_password.policy.

    validate_password.dictionary_file может быть установлен во время выполнения, и присвоение значения приводит к чтению указанного файла без перезагрузки сервера.

  • Минимальная длина пароля

    Формат командной строки --validate-password.length=#
    Системная переменная validate_password.length
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Целое число
    Значение по умолчанию 8
    Минимальное значение 0

    Минимальное количество символов, которое validate_password требует от паролей. Эта переменная недоступна, если не установлен validate_password.

    Минимальное значение validate_password.length зависит от нескольких других связанных системных переменных. Значение не может быть меньше значения этого выражения:

    validate_password.number_count
    + validate_password.special_char_count
    + (2 * validate_password.mixed_case_count)
    

    Если validate_password корректирует значение validate_password.length из-за предыдущего ограничения, в журнал ошибок записывается сообщение.

  • validate_password.mixed_case_count

    Формат командной строки --validate-password.mixed-case-count=#
    Системная переменная validate_password.mixed_case_count
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Целое число
    Значение по умолчанию 1
    Минимальное значение 0

    Минимальное количество строчных и прописных символов, которые validate_password требует в паролях, если политика паролей MEDIUM или сильнее. Эта переменная недоступна, если не установлен validate_password.

    Для заданного значения validate_password.mixed_case_count пароль должен содержать столько же строчных и столько же прописных символов.

  • validate_password.number_count

    Формат командной строки --validate-password.number-count=#
    Системная переменная validate_password.number_count
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Целое число
    Значение по умолчанию 1
    Минимальное значение 0

    Минимальное количество цифровых символов, которые validate_password требует в паролях, если политика паролей MEDIUM или сильнее. Эта переменная недоступна, если не установлен validate_password.

  • validate_password.policy

    Формат командной строки --validate-password.policy=value
    Системная переменная validate_password.policy
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Перечисление
    Значение по умолчанию 1
    Допустимые значения

    0

    1

    2

    Политика паролей, применяемая validate_password. Эта переменная недоступна, если не установлен validate_password.

    validate_password.policy влияет на то, как validate_password использует свои другие системные переменные настроек политики, за исключением проверки паролей на соответствие логинам, которая контролируется независимо переменной validate_password.check_user_name.

    Значение validate_password.policy может быть задано с помощью числовых значений 0, 1, 2 или соответствующих символьных значений LOW, MEDIUM, STRONG. В следующей таблице описаны тесты, выполняемые для каждой политики. Для теста длины требуемая длина — значение системной переменной validate_password.length. Аналогично, требуемые значения для других тестов задаются другими validate_password.xxx переменными.

    Политика Выполняемые тесты
    0 или LOW Длина
    1 или MEDIUM Длина; цифры, строчные/прописные буквы и специальные символы
    2 или STRONG Длина; цифры, строчные/прописные буквы и специальные символы; словарь
  • validate_password.special_char_count

    Формат командной строки --validate-password.special-char-count=#
    Системная переменная validate_password.special_char_count
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Целое число
    Значение по умолчанию 1
    Минимальное значение 0

    Минимальное количество небуквенно-цифровых символов, которые validate_password требует в паролях, если политика паролей MEDIUM или сильнее. Эта переменная недоступна, если не установлен validate_password.

Переменные состояния компонента валидации паролей

Если компонент validate_password включён, он предоставляет переменные состояния, которые предоставляют операционную информацию:

mysql> SHOW STATUS LIKE 'validate_password.%';
+-----------------------------------------------+---------------------+
| Variable_name                                 | Value               |
+-----------------------------------------------+---------------------+
| validate_password.dictionary_file_last_parsed | 2019-10-03 08:33:49 |
| validate_password.dictionary_file_words_count | 1902                |
+-----------------------------------------------+---------------------+

Следующий список описывает значение каждой переменной состояния.

  • validate_password.dictionary_file_last_parsed

    Дата последней обработки файла словаря. Эта переменная недоступна, если не установлен validate_password.

  • validate_password.dictionary_file_words_count

    Количество слов, прочитанных из файла словаря. Эта переменная недоступна, если не установлен validate_password.

Параметры плагина валидации паролей
Примечание

В MySQL 8.4 плагин validate_password был переработан в виде компонента validate_password. Плагин validate_password устарел; ожидается его удаление в будущей версии MySQL. Соответственно, его параметры также устарели, и вы можете ожидать их удаления. Установки MySQL, использующие плагин, должны перейти на использование компонента. См. Раздел 8.4.3.3, «Переход к компоненту валидации паролей».

Для управления активацией плагина validate_password используйте этот параметр:

  • --validate-password[=value]

    Формат командной строки --validate-password[=value]
    Тип Перечисление
    Значение по умолчанию ON
    Допустимые значения

    ON

    OFF

    FORCE

    FORCE_PLUS_PERMANENT

    Этот параметр управляет тем, как сервер загружает устаревший плагин validate_password при запуске. Значение должно быть одним из доступных для параметров загрузки плагинов, как описано в Разделе 7.6.1, «Установка и удаление плагинов». Например, --validate-password=FORCE_PLUS_PERMANENT сообщает серверу загрузить плагин при запуске и предотвращает его удаление во время работы сервера.

    Этот параметр доступен только если плагин validate_password был предварительно зарегистрирован с помощью INSTALL PLUGIN или загружен с помощью --plugin-load-add. См. Раздел 8.4.3.1, «Установка и удаление компонента валидации паролей».

END_OF_DOCUMENT_MARKER
Системные переменные плагина проверки паролей
Примечание

В MySQL 8.4 плагин validate_password был переписан как компонент validate_password. Плагин validate_password устарел; ожидается его удаление в будущей версии MySQL. Следовательно, его системные переменные также устарели, и вы должны ожидать их удаления. Используйте соответствующие системные переменные компонента validate_password; см. Системные переменные компонента проверки паролей. Установки MySQL, использующие плагин, должны перейти на использование компонента. См. Раздел 8.4.3.3, «Переход на компонент проверки паролей».

  • validate_password_check_user_name

    Формат командной строки --validate-password-check-user-name[={OFF|ON}]
    Системная переменная validate_password_check_user_name
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Булево
    Значение по умолчанию ON

    Эта системная переменная плагина validate_password устарела; ожидается ее удаление в будущей версии MySQL. Используйте соответствующую системную переменную validate_password.check_user_name компонента validate_password.

  • validate_password_dictionary_file

    Формат командной строки --validate-password-dictionary-file=file_name
    Системная переменная validate_password_dictionary_file
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Имя файла

    Эта системная переменная плагина validate_password устарела; ожидается ее удаление в будущей версии MySQL. Используйте соответствующую системную переменную validate_password.dictionary_file компонента validate_password.

  • validate_password_length

    Формат командной строки --validate-password-length=#
    Системная переменная validate_password_length
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 8
    Минимальное значение 0

    Эта системная переменная плагина validate_password устарела; ожидается ее удаление в будущей версии MySQL. Используйте соответствующую системную переменную validate_password.length компонента validate_password.

  • validate_password_mixed_case_count

    Формат командной строки --validate-password-mixed-case-count=#
    Системная переменная validate_password_mixed_case_count
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 1
    Минимальное значение 0

    Эта системная переменная плагина validate_password устарела; ожидается ее удаление в будущей версии MySQL. Используйте соответствующую системную переменную validate_password.mixed_case_count компонента validate_password.

  • validate_password_number_count

    Формат командной строки --validate-password-number-count=#
    Системная переменная validate_password_number_count
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 1
    Минимальное значение 0

    Эта системная переменная плагина validate_password устарела; ожидается ее удаление в будущей версии MySQL. Используйте соответствующую системную переменную validate_password.number_count компонента validate_password.

  • validate_password_policy

    Формат командной строки --validate-password-policy=value
    Системная переменная validate_password_policy
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Перечисление
    Значение по умолчанию 1
    Допустимые значения

    0

    1

    2

    Эта системная переменная плагина validate_password устарела; ожидается ее удаление в будущей версии MySQL. Используйте соответствующую системную переменную validate_password.policy компонента validate_password.

  • validate_password_special_char_count

    Формат командной строки --validate-password-special-char-count=#
    Системная переменная validate_password_special_char_count
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 1
    Минимальное значение 0

    Эта системная переменная плагина validate_password устарела; ожидается ее удаление в будущей версии MySQL. Используйте соответствующую системную переменную validate_password.special_char_count компонента validate_password.

Переменные состояния плагина проверки паролей
Примечание

В MySQL 8.4 плагин validate_password был повторно реализован как компонент validate_password. Плагин validate_password устарел; ожидается его удаление в будущей версии MySQL. Соответственно, его переменные состояния также устарели; ожидается их удаление. Используйте соответствующие переменные состояния компонента validate_password; см. Переменные состояния компонента проверки паролей. Установки MySQL, использующие плагин, должны перейти к использованию компонента вместо него. См. Раздел 8.4.3.3, «Переход к компоненту проверки паролей».

  • validate_password_dictionary_file_last_parsed

    Эта переменная состояния плагина validate_password устарела; ожидается её удаление в будущей версии MySQL. Используйте соответствующую переменную состояния validate_password.dictionary_file_last_parsed компонента validate_password вместо неё.

  • validate_password_dictionary_file_words_count

    Эта переменная состояния плагина validate_password устарела; ожидается её удаление в будущей версии MySQL. Используйте соответствующую переменную состояния validate_password.dictionary_file_words_count компонента validate_password вместо неё.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/validate-password-options-variables.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API