错误信息
// 错误信息
java.sql.SQLException:
Access denied for user 'Administrator'@'localhost' (using password: YES)
错误配置如下
// jdbc.properties 文件中的配置
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/seckill?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC
//注意这里! 用户名的key定义成username
username=root
password=123456
<!-- c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- ognl取值方式 -->
<property name="driverClass" value="${driver}"/>
<property name="jdbcUrl" value="${url}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
<property name="maxPoolSize" value="30"/>
<property name="minPoolSize" value="10"/>
<!-- 关闭后是否自动commit -->
<property name="autoCommitOnClose" value="false"/>
<!-- 超时时间 -->
<property name="checkoutTimeout" value="1000"/>
<!-- 重试次数 -->
<property name="acquireRetryAttempts" value="2"/>
</bean>
那么出现问题的原因,可以从报错信息看到, 配置的用户名明明是 root,但是实际读取到的是 Administrator,读取的是哪里的呢?
username 读取的是电脑系统的 username,我的电脑的名称是 Administrator,所以这里出现的这个小坑,给与记录。
改进方式
既然知道错误,改进方式也很简单 将 jdbc.properties 文件中的配置 username 属性改成 user 或者 自己喜欢的能明确表达的键
代码如下
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/seckill?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC
user=root
password=123456
<!-- c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driver}"/>
<property name="jdbcUrl" value="${url}"/>
<property name="user" value="${user}"/>
<property name="password" value="${password}"/>
<property name="maxPoolSize" value="30"/>
<property name="minPoolSize" value="10"/>
<!-- 关闭后是否自动commit -->
<property name="autoCommitOnClose" value="false"/>
<!-- 超时时间 -->
<property name="checkoutTimeout" value="1000"/>
<!-- 重试次数 -->
<property name="acquireRetryAttempts" value="2"/>
</bean>
问题解决,希望可以帮助到需要的人,如果有不足,请各位大佬指点!