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
英文地址,請注明出處:http://en.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] 也就是說…