You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Java连接MySQL报错:客户端不支持服务器认证协议求助

解决Java连接MySQL 9.0时的Client does not support authentication protocol异常

这个异常的核心原因是你的Java JDBC驱动版本过低,不支持MySQL Server 9.0要求的认证协议。以下两种方案可以解决问题:

方案一:升级MySQL JDBC驱动

这是推荐的长期解决方案,确保驱动与MySQL Server版本兼容:

  • 若使用Maven,更新pom.xml中的依赖:
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.0.39</version> <!-- 选择兼容MySQL 9.0的最新稳定版 -->
    </dependency>
    
  • 若使用Gradle,更新build.gradle
    implementation 'com.mysql:mysql-connector-j:8.0.39'
    
  • 手动管理依赖的话,获取对应版本的驱动JAR包,添加到项目的类路径中。
  • 注意:MySQL Connector/J 8.0+版本的驱动类名已更新为com.mysql.cj.jdbc.Driver,同时JDBC URL需指定时区参数,示例:
    String jdbcUrl = "jdbc:mysql://localhost:3306/your_database?serverTimezone=UTC&useSSL=false";
    

方案二:修改MySQL用户认证方式(临时兼容)

如果暂时无法升级驱动,可将数据库用户的认证方式切换为旧版兼容的mysql_native_password

  1. 通过MySQL Workbench连接到你的MySQL 9.0服务器
  2. 执行以下SQL语句(替换your_usernameyour_password为实际的用户名和密码):
    ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
    FLUSH PRIVILEGES;
    
    • 若需要远程连接,将localhost替换为%(允许所有IP)或指定的IP地址
  3. 执行完成后重启Java程序,即可正常连接数据库

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

火山引擎 最新活动