Я создаю контейнер mysql в докере с URL:
JDBC: MySQL://172.17.0.2: 3306/'Databasename'
172.17.0.2 - это IP-адрес контейнера докеров. Я создаю пользователя с помощью:
CREATE USER 'saman'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'saman'@'%' WITH GRANT OPTION;
когда я хочу подключиться от intllje Ide я connect успешно, но когда я хочу подключиться к моему java-приложению, я получил исключение:
Caused by: com.mysql.cj.core.exceptions.WrongArgumentException: Unable
to load authentication plugin 'caching_sha2_password'
также я изменил пароль проверки подлинности по умолчанию от caching_sha2_password до mysql_native_password в mysql-пользователях. для получения дополнительной информации, когда я использую команду telnet:
telnet 172.17.0.2 3306
return: caching_sha2_passwordConnection закрыт иностранным хостом.
Заранее спасибо.
Наконец, я нашел решение для моего вопроса. Я подключаюсь к командной строке mysql и запускаю следующий запрос:
изменить user 'saman' @'%', идентифицированный с помощью mysql_native_password по паролю;
Затем в phpmyadmin исключение исчезло. Вы можете проверить результат запроса:
выберите пользователя, хост, authentication_string, плагин из mysql.user;
и вы должны увидеть mysql_native_password перед пользователем saman.
У вас возникла эта проблема, потому что вся новая версия MySQL поставляется с добавленным модулем аутентификации, называемым "caching_sha2_password", но вы можете обойти это, используя инструкцию ниже.
GRANT ALL PRIVILEGES ON *.* TO 'saman'@'%' IDENTIFIED WITH mysql_native_password WITH GRANT OPTION;