美文网首页
ERROR com.alibaba.druid.pool.Dru

ERROR com.alibaba.druid.pool.Dru

作者: 时光驿站的印记 | 来源:发表于2022-04-23 22:30 被阅读0次

Spring配置druid数据库连接池时报错:

[main] INFO com.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited
[Druid-ConnectionPool-Create-1572127577] ERROR com.alibaba.druid.pool.DruidDataSource - create connection SQLException, url: jdbc:mysql://localhost:3306/test, errorCode 1045, state 28000
java.sql.SQLException: Access denied for user 'userName'@'127.0.0.1' (using password: YES)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:829)
    at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:449)
    at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:242)
    at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)
    at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1657)
    at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1723)
    at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2838)

从错误报告中可以发现是用户名不合法而无法登录,但仔细检查配置文件发现没有出错。
数据库连接池配置文件druid.properties为:

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root

Spring配置文件beans.xml文件为:

<bean id="druidConfig"
          class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
        <property name="location" value="classpath:druid.properties"></property>
    </bean>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName"
                  value="${driverClassName}"></property>
        <property name="url" value="${url}"></property>
        <property name="username" value="${username}"></property>
        <property name="password" value="${password}"></property>
    </bean>

查阅资料后发现这个问题依然是配置文件中的问题,Spring在读取配置文件时获取了JVM中的部分信息,读取到了用户userName(一般为电脑配置的个人用户名)而非配置的root,所以提示错误Access denied for user 'userName'@'127.0.0.1' (using password: YES)。想要按照配置文件中配置的用户名和密码登录数据库,需要在两个配置文件中加入前缀信息,按照配置信息登录数据库。
修改后的数据库连接池配置文件druid.properties为:

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=mysql

Spring配置文件beans.xml对应修改为:

<bean id="druidConfig"
          class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
        <property name="location" value="classpath:druid.properties"></property>
    </bean>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName"
                  value="${jdbc.driverClassName}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

修改后运行错误修复。

相关文章

网友评论

      本文标题:ERROR com.alibaba.druid.pool.Dru

      本文链接:https://www.haomeiwen.com/subject/tzlzertx.html