【问题标题】:caching_sha2_password Connection closed by foreign host [duplicate]cache_sha2_password 连接被外部主机关闭[重复]
【发布时间】:2018-11-06 05:13:55
【问题描述】:

我使用 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 Ide 连接时,我连接成功,但是当我想从我的 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 返回: cache_sha2_passwordConnection 被外部主机关闭。

【问题讨论】:

    标签: java mysql docker


    【解决方案1】:

    您遇到此问题是因为所有新的 MySQL 版本都带有添加的身份验证插件,称为“caching_sha2_password”,但您可以使用以下语句绕过此问题。

    GRANT ALL PRIVILEGES ON *.* TO 'saman'@'%'  IDENTIFIED WITH mysql_native_password WITH GRANT OPTION;
    

    【讨论】:

      【解决方案2】:

      我终于找到了我的问题的解决方案。 我连接到 mysql 命令行并运行以下查询:

      alter user 'saman'@'%' 用 mysql_native_password by 'password' 标识;

      然后在 phpmyadmin 中异常消失了。 您可以通过以下方式检查上述查询的结果:

      从mysql.user中选择用户、主机、身份验证字符串、插件;

      您必须在“saman”用户面前看到 mysql_native_password

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-19
        • 1970-01-01
        • 2013-01-25
        • 1970-01-01
        相关资源
        最近更新 更多