在eclipse中,当我启动我的应用程序时,我得到了这样一个问题:无法发现要使用的方言。java.sql.sqlexception:无法加载身份验证插件“caching\u sha2\u password”。
在java.sql.sqlexception:无法加载身份验证插件“caching\u sha2\u password”。在com.mysql.jdbc.sqlerror.createsqlexception(sqlerror。java:868)在com.mysql.jdbc.sqlerror.createsqlexception(sqlerror。java:864)在com.mysql.jdbc.mysqlio.proceedhandshakewithpluggableauthentication(mysqlio。java:1746)在com.mysql.jdbc.mysqlio.dohandshake(mysqlio。java:1226)在com.mysql.jdbc.connectionimpl.coreconnect(connectionimpl。java:2191)在com.mysql.jdbc.connectionimpl.connectonetryonly(connectionimpl。java:2222)在com.mysql.jdbc.connectionimpl.createnewio(connectionimpl。java:2017)在com.mysql.jdbc.connectionimpl。java:779)在com.mysql.jdbc.jdbc4connection.(jdbc4connection。java:47)在位于sun.reflect.nativeconstructoraccessorimpl.newinstance0(本机方法),位于sun.reflect.nativeconstructoraccessorimpl.newinstance(未知源),位于sun.reflect.delegatingconstructoraccessorimpl.newinstance(未知源),位于java.lang.reflect.constructor.newinstance(未知源),位于com.mysql.jdbc.util.handlenewinstance(util。java:425)在com.mysql.jdbc.connectionimpl.getinstance(connectionimpl。java:389)在com.mysql.jdbc.nonregisteringdriver.connect(nonregisteringdriver。java:330)位于java.sql.drivermanager.getconnection(未知源),位于java.sql.drivermanager.getconnection(未知源)ch.qos.logback.core.db.driverManager连接源.getconnection(driverManager连接源)。java:54)在ch.qos.logback.core.db.connectionsourcebase.discoverconnectionproperties(connectionsourcebase。java:46)位于ch.qos.logback.core.db.drivermanagerconnectionsource.start(drivermanagerconnectionsource)。java:38)在ch.qos.logback.core.joran.action.nestedcomplexpropertyia.end(nestedcomplexpropertyia。java:161)at ch.qos.logback.core.joran.spi.interpreter.callendaction(解释器。java:309)at ch.qos.logback.core.joran.spi.interpreter.endelement(解释器。java:193)at ch.qos.logback.core.joran.spi.interpreter.endelement(解释器。java:179)在ch.qos.logback.core.joran.spi.eventplayer.play(eventplayer。java:62)在ch.qos.logback.core.joran.genericconfigurator.doconfigure(genericconfigurator。java:165)在ch.qos.logback.core.joran.genericconfigurator.doconfigure(genericconfigurator。java:152)在ch.qos.logback.core.joran.genericconfigurator.doconfigure(genericconfigurator。java:110) 在ch.qos.logback.core.joran.genericconfigurator.doconfigure(genericconfigurator。java:53)在ch.qos.logback.classic.util.contextinitializer.configurebyresource(contextinitializer。java:75)在ch.qos.logback.classic.util.contextinitializer.autoconfig(contextinitializer。java:150)在org.slf4j.impl.staticloggerbinder.init(staticloggerbinder。java:84)在org.slf4j.impl.staticloggerbinder。java:55)在org.slf4j.loggerfactory.bind(loggerfactory。java:150)在org.slf4j.loggerfactory.performinization(loggerfactory。java:124)在org.slf4j.loggerfactory.getiloggerfactory(loggerfactory。java:412)在ch.qos.logback.classic.util.statusviaslf4jloggerfactory.addstatus(statusviaslf4jloggerfactory。java:32)在ch.qos.logback.classic.util.statusviaslf4jloggerfactory.addinfo(statusviaslf4jloggerfactory。java:20)在ch.qos.logback.classic.servlet.logbackservletcontainerinitializer.onstartup(logbackservletcontainerinitializer。java: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)在org.apache.catalina.core.containerbase$startchild.call(containerbase。java:1411)在java.util.concurrent.futuretask.run(未知源)at java.util.concurrent.threadpoolexecutor.runworker(未知源)at java.util.concurrent.threadpoolexecutor$worker.run(未知源)at java.lang.thread.run(未知源)
16条答案
按热度按时间kiayqfof1#
我使用下面的依赖关系解决了完全相同的问题:
我刚换到46版,一切正常。
wa7juj8i2#
另一个原因可能是您指向了错误的端口。
确保您实际上指向了正确的sql server。您可能有一个默认安装的mysql在3306上运行,但实际上您可能需要一个不同的mysql示例。
检查端口并对数据库运行一些查询。
xoshrz7s3#
这可能是mysql的连接器,需要更新,因为mysql8更改了密码加密,所以旧的连接器加密不正确。
java连接器的maven repo可以在这里找到。
如果你使用flyway插件,你也应该考虑更新它!
然后,您只需更新maven pom:
或者对于其他使用gradle的用户,可以使用以下内容更新build.gradle:
j2qf4p5b4#
如果添加了多版本连接器jar文件,请删除connect.jar文件,只添加与sql版本匹配的连接器jar文件。
yuvru6vn5#
其他人已经指出了根本问题,但在我的例子中,我使用的是dbeaver,最初使用dbeaver设置mysql连接时,选择了错误的mysql驱动程序(这里的答案是:https://github.com/dbeaver/dbeaver/issues/4691#issuecomment-442173584 )
选择下图中的mysql选项会出现前面提到的错误,因为驱动程序是mysql 4+,可以在数据库信息提示中看到。
而不是选择mysql驱动程序,而是选择mysql 8+驱动程序,如下图所示。
r6hnlfcb6#
我在一个spring启动应用程序中遇到了这个错误,但在另一个应用程序中没有。最后,我发现spring引导版本中不起作用的版本是2.0.0.release,起作用的版本是2.0.1.release。这导致了mysql连接器的不同——5.1.45和5.1.46。我为在启动时抛出此错误的应用程序更新了spring启动版本,现在它可以工作了。
deyfvvtc7#
如上所述:
从mysql 8.0.4开始,mysql团队将mysql服务器的默认身份验证插件从mysql\u native\u password更改为caching\u sha2\u password。
所以有三种方法可以解决这个问题:
qmb5sa228#
如果您对带有“caching\u sha2\u password”插件的新mysql版本有问题,请按照下面的命令解决。
或者您可以使用以下命令保持您的权限不变:
lxkprmvk9#
我认为最好更新“mysql connector”lib包,这样数据库就更安全了。
我使用的是8.0.12版本的mysql。当我将mysql连接器java更新到8.0.11版本时,问题就消失了。
vojdkbi010#
我正在使用mysql 8.0.12,并将mysql连接器更新为mysql-connector-java-8.0.12,为我解决了这个问题。
希望它能帮助别人。
js5cn81o11#
我在处理murachjsp书中的一个现成项目时,在netbeans上遇到了这个问题。这个问题是由于在mysql 8.0.13数据库中使用5.1.23连接器j造成的。我需要用一个新的司机替换旧的司机。下载连接器j后,需要三个步骤。
如何替换netbeans项目连接器j:
从这里下载当前接头j。然后复制到你的操作系统。
在netbeans中,单击projects选项卡旁边的files选项卡。找到mysql-connector-java-5.1.23.jar或任何旧的连接器。删除此旧连接器。粘贴新接头。
单击“项目”选项卡。导航到“库”文件夹。删除旧的mysql连接器。右键单击libraries文件夹。选择添加jar/文件夹。导航到放置新连接器的位置,然后选择“打开”。
在“项目”选项卡中,右键单击项目。选择弹出菜单底部的“解析数据源”。单击添加连接。此时,netbeans向前跳转并假设您想要使用旧的连接器。单击“上一步”按钮返回跳过的窗口。拆下旧接头,然后添加新接头。单击“下一步”并测试连接以确保其正常工作。
作为视频参考,我发现这是有用的。对于intellij idea,我发现这很有用。
syqv5f0l12#
您只需删除旧的连接器并下载新版本(mysql-connector-java-5.1.46)
q8l4jmvw13#
可能是您使用了错误的mysql\u连接器。
使用相同mysql版本的连接器
l7wslrjt14#
如果可以将连接器更新到支持mysql 8新的身份验证插件的版本,那么就这样做。如果出于某种原因这不是一个选项,请将数据库用户的默认身份验证方法更改为native。
dgtucam115#
使用mysql版本升级mysql connector“lib包,如下所示我使用的是8.0.13版本,在pom中我更改了版本:
我的问题解决了。