5.3.10 Обновление паролей старого протокола аутентификации
В MySQL 4.1 хеши паролей были расширены с 16 до 41 байта. Однако обновление MySQL не автоматически обновляет старые пароли, поэтому существующие пароли продолжают храниться в устаревшем формате. Это происходит потому, что MySQL не хранит пароли в виде простого текста, поэтому для перегенерации хешей паролей требуется вмешательство пользователя.
Соответствующий параметр был включён по умолчанию начиная с MySQL 5.6. Он всегда включён начиная с MySQL 5.7, что означает, что его нельзя отключить. В будущей версии MySQL этот параметр будет удалён. При включённом этом параметре пользователь с паролем, определённым в старом формате, не сможет войти в MySQL.
С учётом сказанного, устаревший формат паролей не работает с MySQL 5.7. Все пароли, использующие старый формат, должны быть обновлены. В этом разделе описано, как обновить эти пароли с помощью MySQL Workbench. Для получения информации о миграции со старого формата паролей с помощью командной строки MySQL вместо MySQL Workbench, см. .
Метод хранения пароля в MySQL определяется плагином аутентификации. Старый метод использует плагин аутентификации mysql_old_password, а текущий метод по умолчанию использует mysql_native_password. Начиная с MySQL 5.6, также доступен параметр sha256_password, хотя он требует SSL- или шифрованного соединения. При обновлении паролей MySQL Workbench обновляет mysql_old_password на mysql_native_password. Для дополнительной информации о плагинах аутентификации см. .
Плагин аутентификации mysql_native_password устарел начиная с MySQL Server 8.0.34, отключён по умолчанию начиная с MySQL Server 8.4.0 и удалён начиная с MySQL Server 9.0.0.
MySQL Workbench использует mysql_native_password по умолчанию, поэтому, например, для создания пользователя MySQL Server 8.4 требуется его включение. Включите mysql_native_password=ON в разделе [mysqld] вашего файла конфигурации MySQL Server 8.4 my.cnf, чтобы включить этот плагин.
Параметры зависят от параметра secure_auth
Обновление пароля имеет ограничения. Вот два сценария:
-
Если параметр MySQL Server отключён, то вы можете войти в систему с пользователем со старым форматом пароля и обновить пароль пользователя MySQL. Однако этот вариант недоступен с MySQL Workbench 6.3.5, так как совместимость со старым форматом пароля была удалена. По этой причине возможность обновления формата пароля пользователя должна выполняться с помощью командной строки MySQL, как описано в .
ПримечаниеЕсли использование командной строки MySQL не является вариантом, то можно использовать более старую версию MySQL Workbench (версия 6.3.4 и ранее), которая позволяет включить параметр Использовать старый протокол аутентификации в вкладке соединений Дополнительно. Более старые версии MySQL Workbench доступны по адресу https://downloads.mysql.com/archives/workbench/.
Как уже упоминалось, параметр включен по умолчанию начиная с MySQL 5.6 и всегда включен начиная с MySQL 5.7.
Если параметр включён, вы не можете войти в систему, если пароль вашего пользователя хранится в старом формате. Попытки завершатся ошибкой, подобной "Ошибка 2049 (HY000): Соединение, использующее старый (до 4.1.1) протокол аутентификации, отклонено (включен параметр клиента 'secure_auth')". Чтобы обновить пароль, вы можете либо отключить
secure_auth(не рекомендуется), затем обновить, как описано выше, либо войти в систему как другой привилегированный пользователь, например root, чтобы изменить пароль для другого пользователя.
Использование MySQL Workbench для обновления пароля
Учитывая вышесказанное, существуют два способа обновления паролей с помощью MySQL Workbench.
Откройте вкладку Пользователи и права из навигатора управления. Выберите учетную запись пользователя, которую вы хотите обновить, из раздела Учетные записи пользователей. Если используется старый формат пароля, вы увидите текст, начинающийся с "Этот аккаунт использует метод хэширования паролей до mysql-4.1.1" в правом нижнем углу экрана, а также большую кнопку справа. Отсюда вы можете:
-
Вариант для всех версий MySQL:
Вручную введите новый пароль или текущий пароль и нажмите . Это обновит пароль до нового формата, и пользователь MySQL теперь сможет войти в систему, используя новый заданный вами пароль.
-
Вариант для MySQL 5.6 и более поздних версий:
Вместо изменения поля пароля оставьте его без изменений и сразу нажмите . Отсюда вы можете сгенерировать случайный пароль и пометить его как истекший, нажав . Используйте этот временный случайный пароль для входа в систему пользователя, и MySQL запросит новый пароль, когда пользователь впервые войдёт в систему.
Следующие изображения демонстрируют последовательность шагов, используемых в обоих методах:
Рисунок 5.24 Обновление старого пароля: Установка нового пароля
Рисунок 5.25 Обновление старого пароля: Сброс до случайного истекшего пароля
При сбросе до случайного пароля необходимо сохранить пароль и предоставить его пользователю. Вы найдёте случайный пароль в новом всплывающем окне, похожем на следующий рисунок.
Рисунок 5.26 Обновление старого пароля: Всплывающее окно случайного пароля
После завершения обновления обратите внимание на новый тип Тип аутентификации для подключения. В примере, показанном на следующем рисунке, значение изменилось со Стандартный (старый) на Стандартный. Другими словами, тип аутентификации изменился с mysql_old_password на mysql_native_password.
Рисунок 5.27 Обновлённый пароль: Стандартный (старый) до Стандартный
© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/workbench-en/wb-mysql-connections-secure-auth.html