• java.sql.SQLNonTransientConnectionException Public Key Retrieval is not allowed


    报错信息

    2022-03-18 17:46:43.428 ERROR 20704 — [eate-1849941462] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql:///ymcc-uaa&useSSL=false&serverTimezone=UTC, errorCode 0, state 08001
    java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:456) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197) ~[mysql-connector-java-8.0.19.jar:8.0.19]
    at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1513) ~[druid-1.1.9.jar:1.1.9]
    at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1578) ~[druid-1.1.9.jar:1.1.9]
    at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2466) ~[druid-1.1.9.jar:1.1.9]

    如何解决

    mysql8.x版本的数据库在连接的时候报错java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed

    只要在url的后边加上allowPublicKeyRetrieval=true重启即可

    allowPublicKeyRetrieval=true

    jdbc:mysql:///ymcc-system&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true

    参数说明:

    1.useSSL=falseMySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭
    2.allowPublicKeyRetrieval=true 允许客户端从服务器获取公钥。
    3.serverTimezone=UTC 设置时区,mysql驱动8.0+也要指定时区,不然也会报一些错

    最后总结:如果您使用的mysql是8.0+,建议最好把以上三个参数设置下,避免发生一些莫名错误。

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    THREEJS基础入门
    常用注解梳理
    项目架构:husky + lint-staged + eslint - git提交前自动检查代码
    大模型浪潮席卷!和鲸科技入选创业邦“2023值得关注的125家AIGC企业”榜单
    busybox 知:构建
    包含漏洞的str_replace函数绕过
    Java面向对象编程
    web 面试高频考点 —— HTTP 篇
    通信协议:Uart的Verilog实现(上)
    ros入门(九)----ros navigation
  • 原文地址:https://blog.csdn.net/m0_55070913/article/details/126105131