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

使用JPA+Hibernate连接MySQL报错:驱动未正确初始化

解决JPA+Hibernate连接MySQL时的「驱动未正确初始化」报错

先看错误堆栈里的核心报错:

ERROR: Access denied for user 'root'@'localhost' (using password: NO)

所谓的「驱动未正确初始化」是数据库连接失败引发的次生错误,根本原因是MySQL用户权限验证失败,结合你的配置信息,以下是具体排查和修复步骤:

  • 修正数据库密码配置
    你的persistence.xml中javax.persistence.jdbc.password值为空,但当前MySQL的root用户大概率设置了密码。请填写正确的root密码:

    <property name="javax.persistence.jdbc.password" value="你的root密码"/>
    
  • 验证root用户的本地登录权限
    打开终端/命令行,执行mysql -uroot -p,输入密码后确认能正常登录到MySQL。如果登录失败,需要重置root密码或调整用户权限:

    -- 重置root密码(MySQL8.0+)
    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    FLUSH PRIVILEGES;
    
  • 适配MySQL 8.0的认证方式
    MySQL8.0默认使用caching_sha2_password认证,部分JDBC驱动版本可能兼容性不佳。可以将root用户的认证方式改为mysql_native_password:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
    FLUSH PRIVILEGES;
    
  • 统一Hibernate依赖版本
    你的pom.xml中hibernate-core(5.6.14.Final)和hibernate-entitymanager(5.6.15.Final)版本不一致,可能引发兼容性问题,改为相同版本:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.6.15.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.6.15.Final</version>
    </dependency>
    
  • 补充JDBC URL的必要参数
    MySQL8.0要求指定时区,否则可能引发连接错误,修改JDBC URL:

    <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/testejpa?useSSL=false&serverTimezone=UTC"/>
    

修正后的persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
             http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">
    <persistence-unit name="exemplo-jpa" transaction-type="RESOURCE_LOCAL">
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/testejpa?useSSL=false&serverTimezone=UTC"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="你的root密码"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
        </properties>
    </persistence-unit>
</persistence>

修正后的pom.xml依赖部分

<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.6.15.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.6.15.Final</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.32</version>
    </dependency>
</dependencies>

内容的提问来源于stack exchange,提问作者Marco Aurélio Lopes Júnior

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 12:27:01