暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

处理Java程序MySQL连接报错:Public Key Retrieval is not allowed 【测试成功】

巴韭特锁螺丝 2025-01-17
95
一、问题背景
    服务器重启后,重启MySQL 8版本数据库,查看java后台日志,出现报错信息。
    log4j:WARN No appenders could be found for logger (com.alibaba.druid.pool.DruidDataSource).log4j:WARN Please initialize the log4j system properly.16:03:46.074 
    [main] ERROR org.activiti.engine.impl.interceptor.CommandContext - Error while closing command contextorg.activiti.engine.
    ActivitiException: couldn't check if tables are already present using metadata: Public Key Retrieval is not allowedat org.activiti.engine.impl.db.DbSqlSession.isTablePresent(DbSqlSession.java:1144) ~
    [activiti-engine-5.22.0.jar!/:5.22.0]at org.activiti.engine.impl.db.DbSqlSession.
    isEngineTablePresent(DbSqlSession.java:1094) ~
    [activiti-engine-5.22.0.jar!/:5.22.0]at org.activiti.engine.impl.db.DbSqlSession.dbSchemaUpdate(DbSqlSession.java:1027) ~[activiti-engine-5.22.0.jar!/:5.22.0]
    二、问题分析
    • 问题分析:
      表示 Activiti 引擎在启动时无法检查数据库表是否存在, MySQL 连接配置不允许获取公钥。
    • 原因:
           使用了 MySQL 8 或更高版本,并且使用了新的默认身份验证插件( caching_sha2_password
      ),连接配置没有允许获取公钥。

      • Activiti 引擎:
         Activiti 是一个流程引擎,需要在数据库中存储流程定义和运行时数据。
      • couldn't check if tables are already present using metadata
        :
         在启动时,Activiti 引擎会检查数据库中是否存在必要的表。
      • Public Key Retrieval is not allowed
        :
        由 MySQL 驱动程序引起的。身份验证插件需要检索服务器的公钥,默认情况下,为了安全被禁用。
    三、问题解决
        解决方法:  添加连接参数 allowPublicKeyRetrieval=true
        修改后的配置文件连接信息如下:
      url:  jdbc:mysql://10.21.3.221:3303/db?characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true


      重新启动java程序,可以看到已经恢复正常。


      文章转载自巴韭特锁螺丝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论