日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

nacos使用mysql8作为存储媒介时报Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not all

發布時間:2023/12/8 数据库 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nacos使用mysql8作为存储媒介时报Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not all 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

nacos2使用外部搭建的mysql8服務作為存儲媒介,剛搭建完mysql8發現nacos連接mysql8沒有任何問題,但是后面突然報了類似下面的異常信息

Caused by: java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
?? ?at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
?? ?at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
?? ?at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
?? ?at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
?? ?at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
?? ?at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:906)
?? ?at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:831)
?? ?at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
?? ?at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
?? ?at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)
?? ?at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
?? ?at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354)
?? ?at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202)
?? ?at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473)
?? ?at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554)
?? ?at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
?? ?at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
?? ?at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
?? ?at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
?? ?at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
?? ?... 172 more
Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not allowed
?? ?at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
?? ?at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
?? ?at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
?? ?at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
?? ?at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
?? ?at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
?? ?at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
?? ?at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:124)
?? ?at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:151)
?? ?at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:49)
?? ?at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:438)
?? ?at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:171)
?? ?at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1342)
?? ?at com.mysql.cj.NativeSession.connect(NativeSession.java:157)
?? ?at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:850)
?? ?... 186 more
Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
?? ?at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
?? ?at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
?? ?at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
?? ?at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
?? ?at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
?? ?at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85)
?? ?at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:128)

前幾次還報了下面的錯誤日志:

Caused by: java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
?? ?at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
?? ?at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
?? ?at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
?? ?at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
?? ?at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
?? ?at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:906)
?? ?at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:831)
?? ?at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
?? ?at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
?? ?at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)
?? ?at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
?? ?at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354)
?? ?at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202)
?? ?at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473)
?? ?at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554)
?? ?at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
?? ?at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
?? ?at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
?? ?at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
?? ?at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
?? ?... 172 more
Caused by: com.mysql.cj.exceptions.CJException: null, ?message from server: "Host '172.18.0.4' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
?? ?at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
?? ?at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
?? ?at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
?? ?at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
?? ?at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
?? ?at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
?? ?at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
?? ?at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:129)
?? ?at com.mysql.cj.protocol.a.NativeProtocol.rejectProtocol(NativeProtocol.java:365)
?? ?at com.mysql.cj.protocol.a.NativeProtocol.readServerCapabilities(NativeProtocol.java:494)
?? ?at com.mysql.cj.protocol.a.NativeProtocol.beforeHandshake(NativeProtocol.java:377)
?? ?at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1340)
?? ?at com.mysql.cj.NativeSession.connect(NativeSession.java:157)
?? ?at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:850)
?? ?... 186 more

最下面爆出的日志都是

Caused by: com.alibaba.nacos.api.exception.NacosException: Nacos Server did not start because dumpservice bean construction failure :
No DataSource set
?? ?at com.alibaba.nacos.config.server.service.dump.DumpService.dumpOperate(DumpService.java:204)
?? ?at com.alibaba.nacos.config.server.service.dump.ExternalDumpService.init(ExternalDumpService.java:52)
?? ?at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
?? ?at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
?? ?at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
?? ?at java.lang.reflect.Method.invoke(Method.java:498)
?? ?at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363)
?? ?at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307)
?? ?at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
?? ?... 53 common frames omitted
Caused by: java.lang.IllegalStateException: No DataSource set
?

所以如果不向上翻日志的話可能找不到解決問題的方法,最初幾次nacos啟動失敗爆出的錯誤信息也不能明確問題所在,只能告訴我們nacos連接MySQL錯誤次數過多,最后一次啟動失敗日志則給出了明確的解決方向,具體方法為在數據庫連接url上增加allowPublicKeyRetrieval=true配置

如果使用nacos-server docker部署的話可以增加下面的配置

?MYSQL_SERVICE_DB_PARAM: characterEncoding=utf8&connectTimeout=2000&allowPublicKeyRetrieval=true&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC

該參數具體解析參照mysql官網說明:https://mysqlconnector.net/connection-options/

總結

以上是生活随笔為你收集整理的nacos使用mysql8作为存储媒介时报Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not all的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。