异常原因Public Key Retrieval is not allowed是 MySQL 8.0 驱动报错客户端默认不允许从服务器公钥自动获取防止中间人劫持旧连接串没配置对应参数就会抛出该异常。方案1连接URL追加参数最简单开发环境推荐在 jdbc 连接末尾添加allowPublicKeyRetrievaltrueuseSSLfalse// MySQL 8 完整示例Stringurljdbc:mysql://127.0.0.1:3306/数据库名?allowPublicKeyRetrievaltrueuseSSLfalseserverTimezoneAsia/Shanghai;yml配置示例SpringBootspring:datasource:url:jdbc:mysql://127.0.0.1:3306/test?allowPublicKeyRetrievaltrueuseSSLfalseserverTimezoneAsia/Shanghaiusername:rootpassword:123456driver-class-name:com.mysql.cj.jdbc.Driver风险提示allowPublicKeyRetrievaltrue生产环境存在安全风险仅本地开发调试使用。方案2生产环境最优解推荐线上方式A配置SSL证书开启可信公钥校验导出MySQL服务端公钥SHOWVARIABLESLIKEssl_ca;将ca证书文件放到项目资源连接串指定serverSslCertclasspath:xxx.pem移除allowPublicKeyRetrievaltrue方式B修改MySQL用户认证方式彻底规避MySQL8 默认caching_sha2_password会触发该问题改成传统mysql_native_password-- 修改用户认证插件ALTERUSERroot%IDENTIFIEDWITHmysql_native_passwordBY你的密码;FLUSHPRIVILEGES;改完重启服务连接串无需加allowPublicKeyRetrieval。完整常见标准连接串开发jdbc:mysql://localhost:3306/dbname?serverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrueuseSSLfalsecharacterEncodingutf8mb4补充说明驱动版本使用mysql-connector-java 8.x才会出现该报错5.x 无此限制安全区分本地开发用方案1快速解决服务器生产优先方案2-B改认证插件或方案2-A配置SSL证书不要开启allowPublicKeyRetrievaltrue