8.4.3 Компонент проверки паролей
Компонент validate_password служит для повышения безопасности, требуя учетные пароли и обеспечивая проверку силы потенциальных паролей. Этот компонент предоставляет системные переменные, которые позволяют настроить политику паролей, и переменные состояния для мониторинга компонента.
Компонент validate_password реализует следующие возможности:
Для SQL-запросов, присваивающих пароль, заданный как значение в открытом виде,
validate_passwordпроверяет пароль на соответствие текущей политике паролей и отклоняет пароль, если он слабый (запрос возвращает ошибку). Это относится к запросамALTER USER,CREATE USERиSET PASSWORD.Для запросов
CREATE USER,validate_passwordтребует, чтобы был указан пароль, удовлетворяющий политике паролей. Это верно даже если учетная запись изначально заблокирована, поскольку в противном случае разблокировка учетной записи позже приведет к тому, что она станет доступной без пароля, удовлетворяющего политике.validate_passwordреализует SQL-функциюVALIDATE_PASSWORD_STRENGTH(), которая оценивает силу потенциальных паролей. Эта функция принимает пароль в качестве аргумента и возвращает целое число от 0 (слабый) до 100 (сильный).
Для запросов, которые присваивают или изменяют пароли учетных записей (ALTER USER, CREATE USER и SET PASSWORD), описанные здесь возможности validate_password применяются только к учетным записям, которые используют плагин аутентификации, хранящий учетные данные внутри MySQL. Для учетных записей, которые используют плагины, выполняющие аутентификацию по системе учетных данных, внешней по отношению к MySQL, управление паролями должно также выполняться внешне в отношении этой системы. Дополнительную информацию об внутреннем хранении учетных данных см. в разделе 8.2.15 «Управление паролями».
Предыдущее ограничение не относится к использованию функции VALIDATE_PASSWORD_STRENGTH(), так как она не влияет непосредственно на учетные записи.
Примеры:
-
validate_passwordпроверяет пароль в открытом виде в следующем запросе. В соответствии с политикой паролей по умолчанию, которая требует, чтобы пароли были не менее 8 символов длиной, пароль слабый, и запрос возвращает ошибку:mysql>
ALTER USER USER() IDENTIFIED BY 'abc';ERROR 1819 (HY000): Your password does not satisfy the current policy requirements -
Пароли, заданные как значения в хэшированном виде, не проверяются, поскольку исходное значение пароля недоступно для проверки:
mysql>
ALTER USER 'jeffrey'@'localhost'IDENTIFIED WITH sha256_passwordAS '*0D3CED9BEC10A777AEC23CCC353A8C08A633045E';Query OK, 0 rows affected (0.01 sec) -
Этот запрос создания учетной записи завершается неудачей, даже если учетная запись изначально заблокирована, поскольку он не включает пароль, удовлетворяющий текущей политике паролей:
mysql>
CREATE USER 'juanita'@'localhost' ACCOUNT LOCK;ERROR 1819 (HY000): Your password does not satisfy the current policy requirements -
Для проверки пароля используйте функцию
VALIDATE_PASSWORD_STRENGTH():mysql>
SELECT VALIDATE_PASSWORD_STRENGTH('weak');+------------------------------------+ | VALIDATE_PASSWORD_STRENGTH('weak') | +------------------------------------+ | 25 | +------------------------------------+ mysql>SELECT VALIDATE_PASSWORD_STRENGTH('lessweak$_@123');+----------------------------------------------+ | VALIDATE_PASSWORD_STRENGTH('lessweak$_@123') | +----------------------------------------------+ | 50 | +----------------------------------------------+ mysql>SELECT VALIDATE_PASSWORD_STRENGTH('N0Tweak$_@123!');+----------------------------------------------+ | VALIDATE_PASSWORD_STRENGTH('N0Tweak$_@123!') | +----------------------------------------------+ | 100 | +----------------------------------------------+
Для настройки проверки паролей измените системные переменные с именами вида validate_password.; это параметры, которые управляют политикой паролей. См. раздел 8.4.3.2 «Параметры и переменные проверки паролей».xxx
Если validate_password не установлен, системные переменные validate_password. недоступны, пароли в запросах не проверяются, и функция xxxVALIDATE_PASSWORD_STRENGTH() всегда возвращает 0. Например, без установленного плагина учетным записям могут быть присвоены пароли, короче 8 символов, или вообще без пароля.
Предполагая, что validate_password установлен, он реализует три уровня проверки паролей: LOW, MEDIUM и STRONG. По умолчанию используется MEDIUM; для изменения этого измените значение validate_password.policy. Политики реализуют все более строгие тесты паролей. Следующие описания относятся к значениям параметров по умолчанию, которые можно изменить, изменив соответствующие системные переменные.
Политика
LOWпроверяет только длину пароля. Пароли должны быть не менее 8 символов длиной. Чтобы изменить эту длину, изменитеvalidate_password.length.Политика
MEDIUMдобавляет условия, что пароли должны содержать как минимум 1 числовую цифру, 1 строчную букву, 1 заглавную букву и 1 специальный (не буквенно-цифровой) символ. Чтобы изменить эти значения, изменитеvalidate_password.number_count,validate_password.mixed_case_countиvalidate_password.special_char_count.Политика
STRONGдобавляет условие, что подстроки пароля длиной 4 символа или более не должны совпадать со словами в файле словаря, если он указан. Чтобы указать файл словаря, изменитеvalidate_password.dictionary_file.
Кроме того, validate_password поддерживает возможность отклонения паролей, которые совпадают с частью имени пользователя эффективной учетной записи пользователя для текущей сессии, как вперед, так и назад. Для управления этой возможностью validate_password предоставляет системную переменную validate_password.check_user_name, которая включена по умолчанию.
© 2025 Oracle
Licensed under the GPLv2 License.