You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用mysql-connector-j连接MariaDB 10.11及更高版本?

解决MariaDB 10.11与Java连接的认证插件问题

核心原因

MariaDB 10.11默认认证机制与旧版本存在差异,而mysql-connector-java(现mysql-connector-j)不同版本对新认证插件的适配性不足:

  • 5.1.34版本过旧,不支持MariaDB 10.11引入的auth_gssapi_client相关认证逻辑,直接触发插件加载失败报错。
  • 升级至8.3.0后,该版本连接器对MariaDB特定认证插件的兼容性仍有缺陷,导致BadAuthenticationPlugin错误。

可行解决方案

方案1:使用官方适配的mariadb-connector-j(推荐)

MariaDB官方提供的连接器对自家数据库版本支持最完善,操作步骤如下:

  1. 在Maven依赖中替换原mysql-connector-java为mariadb-connector-j:
<dependency>
    <groupId>org.mariadb.jdbc</groupId>
    <artifactId>mariadb-java-client</artifactId>
    <version>3.3.3</version> <!-- 建议使用最新稳定版 -->
</dependency>
  1. 调整连接URL以适配MariaDB 10.11:
String url = "jdbc:mariadb://localhost:3306/your_db_name?useSSL=false&serverTimezone=UTC";

(若需SSL连接,可将useSSL=false改为useSSL=true,并按需配置SSL相关参数)

方案2:继续使用mysql-connector-j并调整配置

若坚持使用mysql-connector-j(8.x版本),可通过强制指定认证插件规避兼容性问题:

  1. 保留mysql-connector-j 8.3.0依赖,修改连接URL,添加authenticationPlugin=mysql_native_password参数:
String url = "jdbc:mysql://localhost:3306/your_db_name?useSSL=false&serverTimezone=UTC&authenticationPlugin=mysql_native_password";
  1. 确保数据库用户使用mysql_native_password认证方式,可通过以下SQL修改:
ALTER USER 'your_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;

注意事项

  • 优先选择mariadb-connector-j,后续版本更新和问题修复会更及时适配MariaDB的新特性。
  • 若使用mysql-connector-j,需留意版本与MariaDB版本的兼容性,避免再次出现认证类问题。

内容的提问来源于stack exchange,提问作者Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:02:41