ssm整合dataSource配置数据库名 value=${username}连不上数据库问题

没有检索到摘要

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.sql.SQLException: Access denied for user 'xxx'@'localhost' (using password: YES)

异常信息:

java.sql.SQLException: Access denied for user 'xxx'@'localhost' (using password: YES)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:935)
	at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4101)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1300)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2337)

配置:

jdbc.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false
username=root
password=root

applicationContext.xml

 <!--数据库连接技术有spring提供的dataSource,三方开源DBCP连接池及开源c3p0连接池,使用时根据情况三者用其一
    其中spring提供的dataSource(DriverManagerDataSource)它用于开发简单的应用和程序测试,并且不支持连接池,每次连接数据库都是创建新的连接对象。
    相关文章:https://blog.csdn.net/J080624/article/details/53737437
    -->
    <!--spring提供的dataSource 不支持连接池-->
    <!--
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
    </bean>
    -->

<!--开源c3p0设置配置信息-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${driver}"/>
        <property name="jdbcUrl" value="${url}"/>
        <property name="user" value="${username}"/>
        <property name="password" value="${password}"/>
    </bean>
     <!--开源数据库连接池DBCP配置-->
   <!-- <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="${driver}"/>
        <property name="username"   value="${name}"/>
        <property name="password" value="${password}"/>
        <property name="url" value="${url}"/>
    </bean>-->

    <!--将jdbc模板交给容器管理-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--读取c3p0数据源-->
        <property name="dataSource" ref="dataSource"/>
    </bean>

问题原因:
${username}在spring中默认会获取当前计算机的名字,因此导致了连不上数据库。

最简单处理办法:
修改jdbc.properties中用户名的配置,如把username=root修改为jdbc.username=root 或者 name=root,总之名字不能为“username或userName”;
java获取当前电脑名字:System.getenv(“username”)或System.getenv(“userName”)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值