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)
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リファレンスマニュアル
間違ったmysql_connectorを使用している可能性があります。
同じmysqlバージョンのコネクタを使用
あるSpring Bootアプリでこのエラーが発生しましたが、別のアプリでは発生しませんでした。最後に、動作していないバージョンのSpring Bootバージョンは2.0.0.RELEASEで、動作していたバージョンは2.0.1.RELEASEであることがわかりました。これにより、MySQLコネクタに5.1.45と5.1.46の違いが生じました。起動時にこのエラーをスローしていたアプリのSpring Bootバージョンを更新しましたが、現在は動作しています。
古いコネクタを削除して新しいバージョンをダウンロードするだけです(mysql-connector-Java-5.1.46)
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>
この後、私の問題は解決しました。
私はmysql 8.0.12を使用しており、mysqlコネクタをmysql-connector-Java-8.0.12に更新すると問題が解決しました。
それが誰かを助けることを願っています。
上記の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';
このMurach JSP本 の既製のプロジェクトで作業しているときに、NetBeansでこの問題に遭遇しました。この問題は、MySQL 8.0.13データベースで5.1.23コネクタJを使用したために発生しました。古いドライバーを新しいものに置き換える必要がありました。コネクタJをダウンロードした後、これには3つのステップが必要でした。
NetBeansプロジェクトコネクタJを置き換える方法:
here から現在のコネクタJをダウンロードします。次に、それをOSにコピーします。
NetBeansで、「プロジェクト」タブの横にある「ファイル」タブをクリックします。 mysql-connector-Java-5.1.23.jarまたは古いコネクタを見つけます。この古いコネクタを削除します。新しいコネクタに貼り付けます。
[プロジェクト]タブをクリックします。ライブラリフォルダーに移動します。古いmysqlコネクタを削除します。ライブラリフォルダーを右クリックします。 [Jar /フォルダの追加]を選択します。新しいコネクタを配置した場所に移動して、開くを選択します。
[プロジェクト]タブで、プロジェクトを右クリックします。ポップアップメニューの下部にある[データソースの解決]を選択します。 [接続の追加]をクリックします。この時点で、NetBeansは前方にスキップし、古いコネクタを使用することを想定しています。スキップされたウィンドウに戻るには、[戻る]ボタンをクリックします。古いコネクタを削除し、新しいコネクタを追加します。 [次へ]をクリックし、接続をテストして機能することを確認します。
ビデオを参照するには、 this が役立つことがわかりました。 IntelliJ IDEAの場合、 this が有用であることがわかりました。
「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;
「mysql-connector」libパッケージを更新する方が良いと思うので、データベースはさらに安全になります。
バージョン8.0.12のmysqlを使用しています。 mysql-connector-Javaをバージョン8.0.11に更新すると、問題はなくなりました。
以下の依存関係を使用して、まったく同じ問題を実行しました。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-Java</artifactId>
<version>5.1.44</version>
</dependency>
バージョン46に変更するだけで、すべてが機能します。
MySQL 8の新しい認証プラグインをサポートするバージョンにコネクタを更新できる場合は、それを行います。何らかの理由でそれがオプションでない場合は、データベースユーザーのデフォルトの認証方法をネイティブに変更します。
これは、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')
}
}
別の原因として、間違ったポートを指していることが考えられます。
実際に正しいSQLサーバーを指していることを確認してください。 MySQLのデフォルトのインストールが3306で実行されている場合がありますが、実際には別のMySQLインスタンスが必要な場合があります。
ポートを確認し、dbに対してクエリを実行します。
複数バージョンのコネクタjarファイルを追加した場合は、接続.jarファイルを削除します。SQLバージョンと一致するコネクタjarファイルのみを追加します。