Вопрос или проблема
Вошел как пользователь root, текущий пароль уже соответствует требованиям политики.
При отзыва GRANT,
mysql> revoke select on laravel.* from 'dumindu'@'locahost';
ERROR 1819 (HY000): Ваш пароль не соответствует текущим требованиям политики
понизил политику,
mysql> SET GLOBAL validate_password.policy=LOW;
Запрос выполнен, затронуто строк: 0 (0.00 сек)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+-------------------------------------------------+-------+
| Название_переменной | Значение |
+-------------------------------------------------+-------+
| validate_password.changed_characters_percentage | 0 |
| validate_password.check_user_name | ВКЛ |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | НИЗК |
| validate_password.special_char_count | 1 |
+-------------------------------------------------+-------+
перезапустил сервис mysql (установленный с помощью homebrew)
по-прежнему получаю ту же ошибку!
Ответ или решение
Когда вы пытаетесь выполнить команду REVOKE
в MySQL и получаете ошибку ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
, это может быть связано с несколькими аспектами политики паролей, установленной в вашей базе данных.
Понимание проблемы
Вы работаете под пользователем root
, и ваш текущий пароль, судя по всему, соответствует требованиям политики. Однако, когда вы пытаетесь отозвать имеющиеся права с помощью команды:
mysql> REVOKE SELECT ON laravel.* FROM 'dumindu'@'localhost';
вы получаете указанную ошибку. Это может указывать на то, что ваш пользователь dumindu
не имеет пароля, который удовлетворяет текущим требованиям политики паролей, даже если ваш пользователь root
имеет такой пароль.
Проверка и сброс требований
Вы упомянули, что вы понизили политику паролей до LOW
:
mysql> SET GLOBAL validate_password.policy=LOW;
Если это было успешно применено, вы должны удостовериться, что все параметры политики установлены правильно. Например:
mysql> SHOW VARIABLES LIKE 'validate_password%';
В выводе вы должны видеть, что политика действительно установлена на LOW
, а другие параметры — такие как минимальная длина пароля (8 символов), количество смешанных регистров (1), количество цифр (1) и специальные символы (1) — также соответствуют вашим ожиданиям.
После изменения политики вы перезапустили службу MySQL, однако по-прежнему просите об ошибке. Следует обратить внимание на следующие моменты:
Важно проверить:
-
Состояние пользователя
dumindu
: Убедитесь, что у пользователяdumindu
есть установленный пароль, и он действительно соответствует минимальным требованиям, заявленным для политикиLOW
.Чтобы проверить пароль, вы можете использовать следующий запрос, чтобы убедиться, что он установлен:
SELECT User, Host, authentication_string FROM mysql.user WHERE User='dumindu';
-
Обновление пароля: Если пароль не установлен или его недостаточно сложно, это может быть причиной ошибки. Попробуйте изменить пароль следующим образом:
SET PASSWORD FOR 'dumindu'@'localhost' = PASSWORD('новыйСложныйПароль1!');
Убедитесь, что
новыйСложныйПароль1!
соответствует установленным требованиям по политике. -
Настройки глобальных переменных: Не забудьте также убедиться, что изменения, внесенные через
SET GLOBAL
, сохраняются и действуют для всех сессий. Иногда нужно перезапустить базу данных или убедиться, что вы подключены заново, чтобы изменения вступили в силу.
Проверьте другие конфигурации
Если вышеуказанные пункты не решают вашу проблему, возможно, вы столкнулись с конфликтом конфигураций, который может быть вызван настройками файлов конфигурации MySQL (например, my.cnf
или my.ini
). Проверьте, что там нет других установок, которые могут противоречить этим изменениям.
Заключение
При систематическом подходе к проверке пользователя и его пароля, а также с учетом вышеуказанных рекомендаций вы сможете разрешить проблему с ошибкой 1819 и успешно выполнить команду REVOKE
. Не забывайте документировать изменения и всегда проверять настройки после их внесения, чтобы они действовали как ожидалось.
Если вышеизложенные способы не помогают, рекомендую обратиться к документации MySQL или к форумам для получения дальнейшей поддержки, где вы сможете получить советы от других опытных пользователей.