sha256_password устарел предупреждения, заполняя журналы
Я настроил кластер групповой репликации InnoDB MySQL v8.0.19 в одноосновном режиме. У меня есть несколько веб-приложений, получающих доступ к кластеру через собственный экземпляр MySQL Router в соотношении 1:1 в соответствии с предложенным шаблоном.
Кажется, все работает нормально, но журналы моего основного сервера заполняются следующим сообщением:
[Предупреждение] [MY-013360] [Сервер] Плагин sha256_password сообщил: "sha256_password" устарел и будет удален в будущем выпуске. Используйте вместо этого caching_sha2_password '
Сбрасывая таблицу mysql.user, я вижу, что сгенерированные пользователи mysql_router используют плагин mysql_native_password, а все другие пользователи используют правильный плагин caching_sha2_password.
Эти маршрутизаторы mysql - единственные клиенты, обращающиеся к серверу, поэтому я подозреваю, что он жалуется на то, как обращается к кластеру.
Кто-нибудь знает, как исправить это предупреждение?
3 ответа
У меня была та же проблема, что предупреждение заполняло мой журнал ошибок, а также ни один из пользователей в
mysql.user
таблица использовала. Как объясняется в этом сообщении блога , предупреждение вводит в заблуждение, проблема заключалась в незарегистрированном пользователе, который пытается войти в MySQL.
Причина, по которой мы видим предупреждение о
sha256_password
, а не ошибка отказа в доступе, потому что:
когда имя пользователя не найдено, MySQL случайным образом назначает плагин аутентификации и продолжает аутентификацию, чтобы окончательно ее отклонить.
Как описано в указанной выше публикации блога, вы можете использовать подключаемый модуль управления подключением для идентификации незарегистрированного пользователя:
INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';
select * from information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
ALTER USER может изменить плагин аутентификации:
ALTER USER usernmae@remoteip
IDENTIFIED WITH 'caching_sha2_password'
RETAIN CURRENT PASSWORD
Установка глобальной переменной mysql default_authentication_plugin сработала для меня.
mysql> show variables like 'default_authentication_plugin';
| Variable_name | Value |
| default_authentication_plugin | mysql_native_password |
Запустите докер с плагином chaching_sha2_password.
#> docker run -it --rm mysql mysql -u root -p --default-authentication-plugin=caching_sha2_password
или /etc/mysql/conf.d/mysql.cnf