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

Другие вопросы по тегам