zoukankan      html  css  js  c++  java
  • Access denied for user 'root'@'localhost' Could not obtain connection

    某次在导入新项目时候出现异常:
    1.

    2017-11-13 10:50:55,437 [WARN]-[org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:204)] HHH000342: Could not obtain connection to query metadata : Access denied for user 'root'@'localhost' (using password: YES)
    
    HHH000342: Could not obtain connection to query metadata : Access denied for user 'root'@'localhost' (using password: YES)
    

    项目使用的框架是spring 和 jpa,连接池使用c3p0,
    以上问题可能有以下原因造成:
    1,驱动配置有误:driver=com.mysql.jdbc.Driver
    2,数据库连接地址有误:url=jdbc:mysql://localhost:3306/test?3useUnicode=true&characterEncoding=utf8
    3,密码或帐号有误:username=root password=root
    4,数据库未启动或无权访问
    5,项目未引入对应的驱动jar包mysql-connector-java-5.x.x-bin.jar
    6,mysql root没有远程访问的权限,需要增加权限,增加权限的步骤如下:
    进入mysql数据库:
    grant all privileges on . to ‘root’@’%’ identified by ‘root’ with grant option;
    flush privileges;

    将以上步骤都做完后,发现还是没有解决问题。

    然后重新查看配置文件,在applicationContext.xml中数据库连接池的配置是这样的:

    <context:property-placeholder location="classpath:db_dev.properties"/>
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driverClass}"/>
            <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
            <property name="user" value="${jdbc.user}"/>
            <property name="password" value="${jdbc.password}"/>
            <property name="initialPoolSize" value="${jdbc.initPoolSize}"/>
            <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
        </bean>
    

    看到这个正常反应是配置应该都在properties里面了,可是修改properties也是出现一样的问题。

    之后无意在resources文件夹下发现有个META-INF的文件夹,打开发现有个配置文件persistence.xml,里面的配置如下:

    <?xml version="1.0"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
        <persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
            
            <properties>
                <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
                <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysqlDriver" />
                <property name="hibernate.connection.username" value="root" />
                <property name="hibernate.connection.password" value="!Cascade020" />
                <property name="hibernate.connection.url" value="jdbc.mysql://localhost:3306/mmscm"/>
                <property name="hibernate.max_fetch_depth" value="3" />
                <property name="hibernate.show_sql" value="true" />
                <!--<property name="hibernate.hbm2ddl.auto" value="create-drop"/>-->
            </properties>
        </persistence-unit>
    </persistence>
    

    看到这个<persistence-unit name="persistenceUnit"觉得有点眼熟,所以重新查看applicationContext.xml里面的配置,发现有一个这样的配置:

    <bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
                id="entityManagerFactory">
           <property name="persistenceUnitName" value="persistenceUnit" />
            <property name="dataSource" ref="dataSource" />
            <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
            <property name="packagesToScan" value="com.csl.mmscm.model.*" />
        </bean>
    

    看到这里后,觉得数据库的配置很有可能是使用了persistence.xml里面的配置来连接数据库的,然后修改了里面的配置,重新运行Tomcat,然后发现报错没有了,打开首页,也能成功登录了,问题解决了。

    总结:搭建框架环境之类的,配置方面的文件需要全部查看清楚,尤其是其他人搭配好的项目,更需要仔细查看所有的配置文件。

    我开始就是只是看了applicationContext.xml,其他的都没有看。万万没想到居然有两个关于数据库连接的配置,所以还是得细心。
  • 相关阅读:
    微信输入文字和更多切换时不改变下面layout大小
    bitmap1 = bitmap2导致bitmap1不能使用一致报回收错误解决
    Mac下命令行打开Sublime
    android.content.res.Resources$NotFoundException:String resource ID #0x86
    SEGGER RTT STOP/SLEEP 模式下使用
    STM32中用 stop 模式 配合低功耗模式下的自动唤醒(AWU) 能否实现FreeRTOS tickless 模式
    NRF52832 能烧写代码 但是不运行 ,是因为没有烧写协议栈
    NRF52832 Logger module 设置
    jlink RTT 打印 BUG , FreeRTOS 在开启 tickless 模式下 无法使用的问题
    gattAttribute_t 含义 中文解释
  • 原文地址:https://www.cnblogs.com/jimloveq/p/10609471.html
Copyright © 2011-2022 走看看