我使用url:
在docker中创建mysql容器JDBC:MySQL的://172.17.0.2:3306 / '的databaseName'
172.17.0.2是docker容器的ip地址。 我创建用户:
CREATE USER 'saman'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'saman'@'%' WITH GRANT OPTION;
当我想从intllje连接时我连接成功,但是当我想从我的java应用程序连接时,我得到了例外:
Caused by: com.mysql.cj.core.exceptions.WrongArgumentException: Unable
to load authentication plugin 'caching_sha2_password'
我也在mysql用户中将默认验证密码从 caching_sha2_password 更改为 mysql_native_password 。 有关使用telnet命令的更多信息:
telnet 172.17.0.2 3306
返回 caching_sha2_passwordConnection被外国主机关闭。
先谢谢。
答案 0 :(得分:0)
你遇到了这个问题,因为所有新的MySQL版本附带了添加的身份验证插件,称为“caching_sha2_password”,但你可以通过使用以下声明来绕过它。
GRANT ALL PRIVILEGES ON *.* TO 'saman'@'%' IDENTIFIED WITH mysql_native_password WITH GRANT OPTION;
答案 1 :(得分:0)
最后,我找到了我的问题的解决方案。 我连接到mysql命令行并运行以下查询:
改变用户' saman' @'%'通过'密码'用mysql_native_password标识;
然后在phpmyadmin中,异常消失了。 您可以使用以下方法检查上述查询的结果:
从mysql.user;
中选择user,host,authentication_string,plugin
你必须在' saman'前面看到 mysql_native_password 。用户。