Mysql报错

1.权限问题

MySQL 认证协议不兼容问题解决方案
这个错误表明您的 MySQL 客户端与服务器要求的认证协议不兼容,通常发生在 MySQL 8.0+ 服务器与旧版客户端之间。

nested exception is org.apache.ibatis.exceptions.PersistenceException:

Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to

obtain JDBC Connection; nested exception is
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
Client does not support authentication protocol requested by server;
consider upgrading MySQL client ### The error may exist in
com/cai/mapper/StudentDao.xml ### The error may involve
com.cai.dao.StudentDao.search ### The error occurred while executing a
query ### Cause:
org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to
obtain JDBC Connection; nested exception is
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
Client does not support authentication protocol requested by server;
consider upgrading MySQL client

解决办法:

方案1:升级 MySQL 客户端(推荐)

更新 Maven/Gradle 依赖:

xml

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version> <!-- 使用最新稳定版 -->
</dependency>

更新 JDBC URL:

properties
spring.datasource.url=jdbc:mysql://localhost:3306/yourdb?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
方案2:修改 MySQL 用户认证方式

如果暂时无法升级客户端:

登录 MySQL:

bash
mysql -u root -p
修改用户认证插件:

sql
– 查看当前认证方式

SELECT user, host, plugin FROM mysql.user;

– 修改为旧版认证协议

ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';

– 刷新权限

FLUSH PRIVILEGES;

或创建新用户:

sql

CREATE USER 'legacy_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL PRIVILEGES ON your_database.* TO 'legacy_user'@'%';
FLUSH PRIVILEGES;
方案3:修改 MySQL 服务器配置(不推荐)

在 my.cnf 或 my.ini 中添加:

ini
[mysqld]
default_authentication_plugin=mysql_native_password
然后重启 MySQL 服务。

验证步骤
检查驱动版本是否更新:

java
System.out.println("MySQL驱动版本: " + com.mysql.cj.jdbc.Driver.class.getPackage().getImplementationVersion());
测试连接:

java
try (Connection conn = DriverManager.getConnection(
“jdbc:mysql://localhost:3306/test?user=root&password=yourpass”)) {
System.out.println(“连接成功!”);
}

2.字符集错误

这个错误是由于 ​​MySQL 客户端(JDBC 驱动)与服务器的字符集协商失败​​ 导致的。MySQL 服务器返回了一个客户端无法识别的字符集索引(255,对应 utf8mb4),而旧版本 JDBC 驱动无法处理该索引。

nested exception is org.apache.ibatis.exceptions.PersistenceException:

Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to

obtain JDBC Connection; nested exception is java.sql.SQLException:
Unknown initial character set index ‘255’ received from server.
Initial client character set can be forced via the ‘characterEncoding’
property. ### The error may exist in com/cai/mapper/StudentDao.xml ###
The error may involve com.cai.dao.StudentDao.search ### The error
occurred while executing a query ### Cause:
org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to
obtain JDBC Connection; nested exception is java.sql.SQLException:
Unknown initial character set index ‘255’ received from server.
Initial client character set can be forced via the ‘characterEncoding’
property.

一、核心原因​​

​​字符集不兼容​​:MySQL 8.0+ 服务器默认使用 utf8mb4 字符集(索引 255),但旧版本 JDBC 驱动(如 mysql-connector-java:5.x)不支持该字符集的索引。
​​驱动版本过旧​​:5.x 驱动仅支持 latin1、utf8(非 utf8mb4)等旧字符集,无法识别 utf8mb4 的索引 255。

​​二、解决方案(分步操作)​​

​​1. 升级 MySQL JDBC 驱动到 8.x 版本​​

MySQL 8.0+ 驱动(mysql-connector-java:8.x)已修复字符集协商问题,支持 utf8mb4 索引 255。

​​Maven 项目​​
修改 pom.xml 中的驱动版本(推荐 8.0.33+):

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version>
</dependency>

​​Gradle 项目​​
修改 build.gradle 中的驱动版本:

dependencies {implementation 'mysql:mysql-connector-java:8.0.33'
}
​​2. 在 JDBC 连接 URL 中显式指定字符集​​

即使驱动版本正确,仍需在连接 URL 中添加 characterEncoding 参数,强制客户端使用 utf8mb4 字符集(兼容服务器返回的索引 255)。

​​修改后的连接 URL 示例​​

jdbc:mysql://localhost:3306/your_database?useSSL=false&                  <!-- 禁用 SSL(可选,若服务器未强制) -->serverTimezone=Asia/Shanghai&  <!-- 设置时区(避免时间戳错误) -->characterEncoding=utf8mb4&     <!-- 显式指定客户端字符集为 utf8mb4 -->allowPublicKeyRetrieval=true   <!-- 允许公钥检索(可选,增强认证兼容性) -->
3. 验证 MySQL 服务器字符集配置​​

登录 MySQL 服务器,确认字符集配置是否与客户端兼容:

– 查看服务器默认字符集(应为 utf8mb4)

SHOW VARIABLES LIKE 'character_set_server';

– 查看数据库字符集(替换为你的数据库名)

SHOW VARIABLES LIKE 'character_set_database';

若服务器未使用 utf8mb4,可手动修改(推荐):

– 修改服务器默认字符集(需重启 MySQL 生效)

SET GLOBAL character_set_server = 'utf8mb4';
SET GLOBAL collation_server = 'utf8mb4_unicode_ci';
​​4. 清理本地仓库并重新构建​​

旧版本驱动的缓存可能导致配置不生效,需清理本地 Maven/Gradle 仓库:

​​Maven 清理缓存​​
删除本地仓库中 mysql-connector-java 的旧版本目录(路径示例):

~/.m2/repository/mysql/mysql-connector-java/5.1.x/
​​Gradle 清理缓存​​
删除 ~/.gradle/caches 目录,重新构建项目:

关闭 IDE,删除缓存目录
rm -rf ~/.gradle/caches
重新导入项目并构建

​​三、常见问题排查​​

​​问题 1:驱动升级后仍报错​​

​​原因​​:驱动未正确加载,或连接 URL 未添加 characterEncoding 参数。

​​解决​​:

检查 pom.xml 或 build.gradle 中驱动版本是否为 8.x(如 8.0.33)。
确认连接 URL 包含 characterEncoding=utf8mb4。

​​问题 2:服务器字符集为 latin1 或其他非 utf8mb4​​

​​原因​​:服务器使用旧字符集,与客户端驱动不兼容。

​​解决​​:

修改服务器字符集为 utf8mb4(推荐):
– 修改服务器默认字符集(需重启 MySQL)
SET GLOBAL character_set_server = ‘utf8mb4’;
SET GLOBAL collation_server = ‘utf8mb4_unicode_ci’;
或在连接 URL 中强制客户端使用服务器支持的字符集(如 latin1):
jdbc:mysql://localhost:3306/your_database?characterEncoding=latin1

问题 3:时区或 SSL 配置冲突​​

​​原因​​:useSSL 或 serverTimezone 参数错误导致连接失败。

​​解决​​:

确保 useSSL=false(若服务器未强制 SSL)。
设置正确的时区(如 serverTimezone=Asia/Shanghai)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84081.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小米汽车5月交付量超过28000台,与上月持平

6月1日&#xff0c;小米汽车公布5月交付数据&#xff0c;2025年5月&#xff0c;小米汽车交付量超过28000台&#xff0c;4月官方披露的交付数据也为28000台。 此外&#xff0c;小米汽车5月新增29家门店&#xff0c;全国82城已有298家门店&#xff1b;6月计划新增37家门店&#x…

严格一致性模型

SC 的第二点约束 :store 必须被 所有(包括自身)执行流 同时看到 ,但是不要求写操作“立即”对其他处理器可见&#xff1b;允许写操作延迟一会儿被其他核观察到。 而 严格一致性模型,包括1. store 必须被 所有(包括自身)执行流 同时看到2. 看到的时间 必须是 某个处理器完成写操…

结合 STM32CubeMX 使用 FreeRTOS 实时操作系统

前言 在STM32CubeMX软件出现以后&#xff0c;创建嵌入式项目变得简洁了许多&#xff0c;开发者无需重复编写MCU的外设初始化配置&#xff0c;只需在STM32CubeMX软件中动动鼠标配置完毕&#xff0c;就可以自动生成基于HAL/LL库的Keil项目文件&#xff0c;提高了开发效率。 最近想…

一致性框架:供应链分布式事务问题解决方案

来源&#xff1a;得物技术 一、前言 二、一致性理论基础 1. 一致性模型概述 2. 最终一致性的必要性 三、供应链一致性框架总体架构 1. 一致性框架的核心功能 2. 一致性框架整体框架 3. 一致性框架整体流程 四、一致性框架实现原理 1. 核心组件设计 2. 异步执行实现原…

民国大模型:智能重构下的乱世觉醒与文明转型

引言&#xff1a;当外滩钟声遇见生成式AI 在历史博物馆的数字化展厅中&#xff0c;一幅动态的《民国百景图》正通过全息投影技术演绎十里洋场的繁华与沧桑。这个虚实交融的场景&#xff0c;恰似民国大模型技术的隐喻——以人工智能为纽带&#xff0c;连接起北洋军阀混战与民族…

ROS2 笔记汇总(2) 通信接口

在 ROS 系统中&#xff0c;通信接口&#xff08;Interface&#xff09; 是节点之间传递信息的标准“语言协议”&#xff0c;确保了不同功能节点之间可以正确理解和使用彼此传送的数据内容。我们可以将其理解为“数据结构格式定义”&#xff0c;贯穿于话题&#xff08;Topic&…

微信小程序:将搜索框和表格封装成组件,页面调用组件

一、实现效果 实现搜索框,表格和翻页效果 二、组件实现 1、创建表格组件页面 (1)创建文件 在文件根目录(与pages同级)直接创建components文件夹,并创建表格的页面common-table/index (2)视图层 a、写入表头 循环由主页面传递的columns,数据为字段名label,宽度为设置…

基于贝叶斯学习方法的块稀疏信号压缩感知算法

基于贝叶斯学习方法的块稀疏信号压缩感知算法 BSBL-FM-master/BSBL_BO.m , 15593 BSBL-FM-master/BSBL_FM.m , 12854 BSBL-FM-master/Phi.mat , 131256 BSBL-FM-master/README.md , 3954 BSBL-FM-master/demo.mat , 1610 BSBL-FM-master/demo_fecg.m , 1481 BSBL-FM-master/de…

【Python爬虫】requests知识点讲解

目录 前言1. requests库基础1.1 安装requests1.2 基本导入 2. HTTP请求方法2.1 GET请求2.2 POST请求2.3 其他HTTP方法 3. 请求头设置3.1 User-Agent设置3.2 常用请求头 4. 响应处理4.1 响应内容获取4.2 响应状态码4.3 响应头信息 5. 会话管理5.1 Session对象5.2 Cookie处理 6. …

服务器上安装配置vsftpd

目录 1. 安装vsftpd服务 2、修改配置文件 3. 修改用户白名单 4. 通过ftp客户端命令登录ftp服务器 5. 参考资料 1. 安装vsftpd服务 执行命令安装vsftp服务、和ftp客户端 yum install vsftpd yum install ftp 2、修改配置文件 在服务器上先创建一个系统用户&#xff0c;待…

C#实现图片文字识别

这几年的AI的发展&#xff0c;使得文字识别难度大大降低、精度大大的提高。百度飞浆就是一个非常好的AI框架&#xff0c;而且是开源的。 我们利用百度飞浆就能快速简单的实现文字识别功能&#xff0c;几行代码就可以集成。 其中百度飞浆的PaddleOCR&#xff0c;就是专门针对文…

Android Framework 调用栈

在Android Framework开发中&#xff0c;添加调用栈&#xff08;Call Stack&#xff09;是调试复杂问题&#xff08;如崩溃、死锁或流程追踪&#xff09;的核心手段。 一、Java层调用栈添加 适用于Activity、Service等组件或Framework中的Java代码。 基础方法&#xff1a; 使用…

Ollama安装非系统盘操作方法(2025年6月测试通过)

Ollama是当前部署大模型比较便利的工具&#xff0c;但是默认会将软件和模型都安装到C盘下&#xff0c;导致系统盘爆表&#xff0c;建议将软件和模型都放置在非系统盘。 1. 软件安装在非系统盘 &#xff08;1&#xff09;在D盘下手动创建ollama目录 &#xff08;2&#xff09…

《HTTP权威指南》 第1-2章 HTTP和URL基础

HTTP请求基础 格式化数据块称为HTTP报文 请求报文&#xff1a;从客户端发往服务器的HTTP报文&#xff0c;只有请求起始行请求首部&#xff0c;没有请求主体 响应报文&#xff1a;从服务器发往客户端的报文&#xff0c;包含响应起始行响应首部响应主体 HTTP报文通过传输控制…

9. TypeScript 泛型

TypeScript 中的泛型使开发者能够编写灵活、可重用的代码&#xff0c;同时保持类型安全。它们允许动态定义类型&#xff0c;确保函数、类和接口可以适用于任何数据类型。这有助于避免重复&#xff0c;提高代码的模块化&#xff0c;使其既类型安全又具备适应性。 一、认识泛型 …

Apache Iceberg与Hive集成:分区表篇

一、Iceberg分区表核心概念与Hive集成原理 1.1 分区表在大数据场景的价值 在大规模数据分析中&#xff0c;分区表通过将数据按特定维度&#xff08;如时间、地域、业务类型&#xff09;划分存储&#xff0c;可显著提升查询效率。Apache Iceberg的分区表设计融合了Hive的分区理…

SAST + IAST + DAST 全链路防护体系构建方案

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 1. 生命周期分层嵌入&#xff08;防御纵深&#xff09; 阶段工具防护重点集成触发点编码阶段SAST源码漏洞&#xff08;硬编码密钥、SQL注入模式&#x…

pnpm link如何不踩坑

前提一&#xff1a;我有一个source-project源码库&#xff0c;有一个develop-project项目库。想使用pnpm link对source-project进行本地调试。 前提二&#xff1a;source-project源码库已打包 本地调试详细步骤如下&#xff1a; 1、检查是否配置了系统环境变量&#xff0c;P…

vue3 javascript 多字段求和技巧

在 Vue 3 中&#xff0c;如果你需要在一个组件中处理多个字段的求和&#xff0c;你可以通过计算属性&#xff08;computed properties&#xff09;或者方法&#xff08;methods&#xff09;来实现。这里我将展示两种主要的方法&#xff1a; 方法 1&#xff1a;使用计算属性&am…

【LeetCode】每日一题 —— No.3405

LeetCode 3405 统计恰好有 K 个相等相邻元素的数组数目&#xff08;DP 构造型&#xff09; 题目概述 我们需要统计长度为 n 的数组 arr 满足如下条件的方案数&#xff1a; 每个元素在区间 [1, m] 之间恰好存在 k 个位置 i (1 ≤ i < n) 满足 arr[i] arr[i - 1] 也就是说…