web-dev-qa-db-ja.com

認証プラグイン「caching_sha2_password」の問題をロードできない問題を解決する方法

Eclipseでアプリケーションを起動したとき、これを取得しました-使用する方言が見つかりませんでした。 Java.sql.SQLException:認証プラグイン 'caching_sha2_password'をロードできません。

java.sql.SQLExceptionで:認証プラグイン 'caching_sha2_password'をロードできません。 com.mysql.jdbc.SQLError.createSQLException(SQLError.Java:868)at com.mysql.jdbc.SQLError.createSQLException(SQLError.Java:864)at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO。 Java:1746)at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.Java:1226)at at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.Java:2191)at com.mysql.jdbc.ConnectionImpl。 connectOneTryOnly(ConnectionImpl.Java:2222)at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.Java:2017)at com.mysql.jdbc.ConnectionImpl。(ConnectionImpl.Java:779)at com.mysql.jdbc .JDBC4Connection。(JDBC4Connection.Java:47)at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) Java.lang.reflect.Constructor.newInstance(Unknown Source)at com.mysql.jdbc.Util.handleNewInstance(Util.Java:425)at t com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.Java:389)at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.Java:330)at at Java.sql.DriverManager.getConnection(Unknown Source)at ch.qos.logback.core.db.DriverManagerConnectionSource.getConnection(DriverManagerConnectionSource.Java:54)at ch.qos.logback.core.db.ConnectionSourceBase.discoverConnectionProperties(ConnectionSourceBase)のJava.sql.DriverManager.getConnection(Unknown Source) .Java:46)ch.qos.logback.core.db.DriverManagerConnectionSource.start(DriverManagerConnectionSource.Java:38)at ch.qos.logback.core.joran.action.NestedComplexPropertyIA.end(NestedComplexPropertyIA.Java:161) )ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.Java:309)at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.Java:193)at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.Java:179)at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPl ayer.Java:62)at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.Java:165)at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.Java:152) ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.Java:110)at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.Java:53)at ch.qos。 logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.Java:75)at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.Java:150)at org.slf4j.impl.StaticLoggerBinder.init( StaticLoggerBinder.Java:84)at org.slf4j.impl.StaticLoggerBinder。(StaticLoggerBinder.Java:55)at org.slf4j.LoggerFactory.bind(LoggerFactory.Java:150)at org.slf4j.LoggerFactory.performInitialization(LoggerFactory .Java:124)at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.Java:412)at at.chos.logback.classic.util.StatusViaSLF4JLoggerFactory.addSta tus(StatusViaSLF4JLoggerFactory.Java:32)at ch.qos.logback.classic.util.StatusViaSLF4JLoggerFactory.addInfo(StatusViaSLF4JLoggerFactory.Java:20)at ch.qos.logback.classic.servlet.LogbackServletContainerInitializer.onStarter(Initializer.onStartup(IntializerContainer。 32)org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5245)でorg.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)でorg.Apache.catalinaでcore.ContainerBase $ StartChild.call(ContainerBase.Java:1421)at org.Apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.Java:1411)at Java.util.concurrent.FutureTask.run(Unknown Source )Java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at Java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)at at Java.lang.Thread.run(Unknown Source)

56
Sarath Mohan

MySQL 8.0.4から、MySQLサーバーのデフォルト認証プラグインをmysql_native_passwordからcaching_sha2_password

以下のコマンドを実行して問題を解決できます。

サンプルのユーザー名/パスワード=> student/pass123

ALTER USER 'student'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass123';

詳細については、公式ページを参照してください。 MySQLリファレンスマニュアル

100
Gaurav

間違ったmysql_connectorを使用している可能性があります。

同じmysqlバージョンのコネクタを使用

20

あるSpring Bootアプリでこのエラーが発生しましたが、別のアプリでは発生しませんでした。最後に、動作していないバージョンのSpring Bootバージョンは2.0.0.RELEASEで、動作していたバージョンは2.0.1.RELEASEであることがわかりました。これにより、MySQLコネクタに5.1.45と5.1.46の違いが生じました。起動時にこのエラーをスローしていたアプリのSpring Bootバージョンを更新しましたが、現在は動作しています。

13
Greg Charles

古いコネクタを削除して新しいバージョンをダウンロードするだけです(mysql-connector-Java-5.1.46)

11
Turab

Mysql-connector "libパッケージを以下のようにmysqlバージョンにアップグレードします。8.0.13バージョンを使用しています。pomではバージョンを変更しました。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
    <scope>runtime</scope>
    <version>8.0.13</version>
</dependency>

この後、私の問題は解決しました。

10
alok

私はmysql 8.0.12を使用しており、mysqlコネクタをmysql-connector-Java-8.0.12に更新すると問題が解決しました。

それが誰かを助けることを願っています。

8

上記のrepiliesで述べたように:

MySQL 8.0.4以降、MySQLチームはMySQLサーバーのデフォルト認証プラグインをmysql_native_passwordからcacheing_sha2_passwordに変更しました。

したがって、この問題を解決するには3つの方法があります。

 1. drop USER 'user_name'@'localhost';
    flush privileges;
    CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'user_name';
    GRANT ALL PRIVILEGES ON * . * TO 'user_name'@'localhost';
    ALTER USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 
    'user_name';

 2. drop USER 'user_name'@'localhost';
    flush privileges;
    CREATE USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 'user_name';
GRANT ALL PRIVILEGES ON * . * TO 'user_name'@'localhost'

 3. If the user is already created, the use the following command:

    ALTER USER 'user_name'@'localhost' IDENTIFIED WITH mysql_native_password BY 
        'user_name';
5
DC-

このMurach JSP本 の既製のプロジェクトで作業しているときに、NetBeansでこの問題に遭遇しました。この問題は、MySQL 8.0.13データベースで5.1.23コネクタJを使用したために発生しました。古いドライバーを新しいものに置き換える必要がありました。コネクタJをダウンロードした後、これには3つのステップが必要でした。

NetBeansプロジェクトコネクタJを置き換える方法:

  1. here から現在のコネクタJをダウンロードします。次に、それをOSにコピーします。

  2. NetBeansで、「プロジェクト」タブの横にある「ファイル」タブをクリックします。 mysql-connector-Java-5.1.23.jarまたは古いコネクタを見つけます。この古いコネクタを削除します。新しいコネクタに貼り付けます。

  3. [プロジェクト]タブをクリックします。ライブラリフォルダーに移動します。古いmysqlコネクタを削除します。ライブラリフォルダーを右クリックします。 [Jar /フォルダの追加]を選択します。新しいコネクタを配置した場所に移動して、開くを選択します。

  4. [プロジェクト]タブで、プロジェクトを右クリックします。ポップアップメニューの下部にある[データソースの解決]を選択します。 [接続の追加]をクリックします。この時点で、NetBeansは前方にスキップし、古いコネクタを使用することを想定しています。スキップされたウィンドウに戻るには、[戻る]ボタンをクリックします。古いコネクタを削除し、新しいコネクタを追加します。 [次へ]をクリックし、接続をテストして機能することを確認します。

ビデオを参照するには、 this が役立つことがわかりました。 IntelliJ IDEAの場合、 this が有用であることがわかりました。

3
Jack J

「caching_sha2_password」プラグインに付属するMySQLバージョンに問題があります。以下のコマンドに従って解決してください。

DROP USER 'your_user_name'@'%';
CREATE USER 'your_user_name'@'%' IDENTIFIED WITH mysql_native_password BY 'your_user_password';
GRANT ALL PRIVILEGES ON your_db_name.* TO 'your_user_name'@'%' identified by 'your_user_password';

または、以下のコマンドを使用して、特権をそのまま維持することができます。

ALTER USER your_user_name IDENTIFIED WITH mysql_native_password;
2
user8406805

「mysql-connector」libパッケージを更新する方が良いと思うので、データベースはさらに安全になります。

バージョン8.0.12のmysqlを使用しています。 mysql-connector-Javaをバージョン8.0.11に更新すると、問題はなくなりました。

2
Jack Ma

以下の依存関係を使用して、まったく同じ問題を実行しました。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
    <version>5.1.44</version>
</dependency>

バージョン46に変更するだけで、すべてが機能します。

1
José Junior

MySQL 8の新しい認証プラグインをサポートするバージョンにコネクタを更新できる場合は、それを行います。何らかの理由でそれがオプションでない場合は、データベースユーザーのデフォルトの認証方法をネイティブに変更します。

1
DataVader

これは、MySQL8がパスワードの暗号化を変更したため、更新する必要があるMySQLのコネクタである可能性があります。したがって、古いコネクタはそれらを誤って暗号化します。

JavaコネクタのMavenリポジトリは、 here にあります。
flywayプラグインを使用する場合更新も !も考慮する必要があります。

次に、maven pomを次のように更新します。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
    <version>8.0.17</version>
</dependency>

または、Gradleを使用する他のユーザーは、build.gradleを次のように更新できます。

 buildscript {
    ext {
        ...
    }
    repositories {
        ...
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath('mysql:mysql-connector-Java:8.0.11')
    }
 }

All that you really need to do (build.gradle example)

1
KeaganFouche

別の原因として、間違ったポートを指していることが考えられます。

実際に正しいSQLサーバーを指していることを確認してください。 MySQLのデフォルトのインストールが3306で実行されている場合がありますが、実際には別のMySQLインスタンスが必要な場合があります。

ポートを確認し、dbに対してクエリを実行します。

0
Aquazi

複数バージョンのコネクタjarファイルを追加した場合は、接続.jarファイルを削除します。SQLバージョンと一致するコネクタjarファイルのみを追加します。

0
user10434384