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=valueСистемная переменная validate_password.policyОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Перечисление Значение по умолчанию 1Допустимые значения 012Политика паролей, применяемая
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 9.2 плагин validate_password был переработан как компонент validate_password. Плагин validate_password устарел; ожидается его удаление в будущих версиях MySQL. Соответственно, его параметры также устарели, и ожидается их удаление. Установки MySQL, которые используют плагин, должны перейти к использованию компонента вместо этого. См. Раздел 8.4.3.3, «Переход к компоненту проверки паролей».
Для управления активацией плагина validate_password используйте этот параметр:
-
Формат командной строки --validate-password[=value]Тип Перечисление Значение по умолчанию ONДопустимые значения ONOFFFORCEFORCE_PLUS_PERMANENTЭтот параметр управляет тем, как сервер загружает устаревший плагин
validate_passwordпри запуске. Значение должно быть одним из доступных для параметров загрузки плагинов, как описано в Раздел 7.6.1, «Установка и удаление плагинов». Например,--validate-password=FORCE_PLUS_PERMANENTсообщает серверу о загрузке плагина при запуске и предотвращает его удаление во время работы сервера.Этот параметр доступен только в том случае, если плагин
validate_passwordбыл предварительно зарегистрирован с помощьюINSTALL PLUGINили загружен с помощью--plugin-load-add. См. Раздел 8.4.3.1, «Установка и удаление компонента проверки паролей».
Системные переменные плагина проверки паролей
В MySQL 9.2 плагин 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Область действия Глобальная Динамическая Да 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=valueСистемная переменная validate_password_policyОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Перечисление Значение по умолчанию 1Допустимые значения 012Эта системная переменная плагина
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 9.2 плагин 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.