springmvc 连接MYSQL数据库报错

老街的小麻雀 2017-05-15 10:47:01
换了电脑和系统,由win7换成了 win10.项目是从另外一台电脑上面COPY过来的,原来的时候在win7上面运行是没问题的。现在的问题是 启动服务的时候没有问题,在应用里面用SQL语句访问数据库的时候就会报错。项目用的是 springmvc+mybatis。
在运行类似这种SQL语句的时候就会报错。(不只是下述语句才会报错,其他的访问数据库的语句也会报错。正常启动服务是没有问题的) tomcat 用的是7 JDK用的是1.7
<select id="getUserInfoByUserName" resultMap="userInfoMap">
SELECT id,
userName,
PASSWORD, real_name, rols_id,
id_card,sex, tel, addres,
create_by,
create_date, update_by,
update_date, remarks1, remarks2,email
FROM users where userName=#{userName}
</select>
报错信息如下
[com.alibaba.druid.pool.DruidDataSource]-create connection error, url: jdbc:mysql://localhost:3306/itemlibrary?useUnicode=true&characterEncoding=utf-8
java.sql.SQLException: Access denied for user 'root '@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1215)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2255)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.GeneratedConstructorAccessor18.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:148)
at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:211)
at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:142)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1377)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1863)


config.properties文件配置如下:
#mysql version database druid setting
validationQuery=SELECT 1 from dual
jdbc.url=jdbc\:mysql\://localhost\:3306/itemlibrary?useUnicode\=true&characterEncoding\=utf-8
jdbc.username=root
jdbc.password=1234

spring-mybatis.xml 配置文件如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
">

<!-- 配置数据源 使用的是Druid数据源 -->
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />

<!-- 初始化连接大小 -->
<property name="initialSize" value="0" />
<!-- 连接池最大使用连接数量 -->
<property name="maxActive" value="20" />

<!-- 连接池最小空闲 -->
<property name="minIdle" value="0" />
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="60000" />
<property name="poolPreparedStatements" value="true" />
<property name="maxPoolPreparedStatementPerConnectionSize"
value="33" />
<!-- 用来检测有效sql -->
<property name="validationQuery" value="${validationQuery}" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000" />
<!-- 打开removeAbandoned功能 -->
<property name="removeAbandoned" value="true" />
<!-- 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800" />
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true" />
<!-- 监控数据库 -->
<property name="filters" value="mergeStat" />
</bean>

<!-- myBatis文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->

<property name="mapperLocations"
value="classpath:chen/library/springmvcdemo/mapping/*.xml" />
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="chen.library.springmvcdemo.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>

<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>


<!-- 拦截器方式配置事物 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!--name:表示与事务属性关联的方法名(业务方法名),对切入点进行细化。通配符(*)可以用来指定一批关联到相同的事务属性的方法
propagation:表示事务传播行为,默认值是REQUIRED
isolation:表示事务隔离级别,默认值DEFAULT(数据库的隔离级别)
timeout:表示事务超时的时间(以秒为单位),默认值-1(永不超时)
read-only:表示事务是否只读, 默认值false不是只读的
rollback-for:表示将被触发进行回滚的 Exception(s);以逗号分开。
如:'com.foo.MyBusinessException,ServletException'
no-rollback-for:表示不被触发进行回滚的 Exception(s);以逗号分开。
如:'com.foo.MyBusinessException,ServletException'-->

<tx:method name="insert*" propagation="REQUIRED" isolation="DEFAULT"/>
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="testTransactionProxy*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<!-- Spring aop事务管理 -->
<aop:config>
<!--第一个*代表返回值,第二*代表service下子包,第三个*代表方法名,“(..)”代表方法参数 -->
<aop:pointcut id="transactionPointcut"
expression="execution(* chen.library.springmvcdemo.service..*Impl.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut"
advice-ref="transactionAdvice" />
</aop:config>
</beans>


求大神给支个招。

...全文
884 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
老街的小麻雀 2017-05-26
  • 打赏
  • 举报
回复
我自己在连接密码那里多打了一个空格。差点没把自己坑死
我爱娃哈哈 2017-05-17
  • 打赏
  • 举报
回复
引用 19 楼 wq86019595 的回复:
[quote=引用 18 楼 u012934325 的回复:] [quote=引用 17 楼 u010223407 的回复:] [quote=引用 14 楼 wq86019595 的回复:] [quote=引用 13 楼 u010223407 的回复:] 用户问题,先用navicat登录下看看有没有问题~~~估计也有同样的问题
看上面我的回复。哥们[/quote] 我也遇到过这个问题 然后直接重新用navicat创建了一个用户[/quote] 简单方便有效,但是原理是什么[/quote] 这个没用。我的这个mysql貌似只能用root账户登录、别的用户名都不行[/quote] 你得用root创建用户,然后还得给权限
weixin_38765925 2017-05-16
  • 打赏
  • 举报
回复
密码为空。要配置
程序员阿鸿 2017-05-16
  • 打赏
  • 举报
回复
url有错,不需要转译
老街的小麻雀 2017-05-16
  • 打赏
  • 举报
回复
刚刚自己仔细的看了一下。是自己的用户名多了1个空格.外加用的myeclipse 有点缓存。所以一直以来就报错
podd 2017-05-16
  • 打赏
  • 举报
回复
先检查本地工具是否能连上数据库,再检查jdbc.url jdbc.url = jdbc:mysql://127.0.0.1:3306/xxxx?characterEncoding=UTF-8&allowMultiQueries=true
墨笙弘一 2017-05-16
  • 打赏
  • 举报
回复
一楼说的对,应该是你的password的问题
老街的小麻雀 2017-05-16
  • 打赏
  • 举报
回复
引用 18 楼 u012934325 的回复:
[quote=引用 17 楼 u010223407 的回复:] [quote=引用 14 楼 wq86019595 的回复:] [quote=引用 13 楼 u010223407 的回复:] 用户问题,先用navicat登录下看看有没有问题~~~估计也有同样的问题
看上面我的回复。哥们[/quote] 我也遇到过这个问题 然后直接重新用navicat创建了一个用户[/quote] 简单方便有效,但是原理是什么[/quote] 这个没用。我的这个mysql貌似只能用root账户登录、别的用户名都不行
Hansy Chen 2017-05-16
  • 打赏
  • 举报
回复
报错信息是你的密码错误,也有可能像楼上说的新装的数据库,密码为null还没有配置,在DOS里面用mysql命令测试你的登录情况!
墨笙弘一 2017-05-16
  • 打赏
  • 举报
回复
引用 17 楼 u010223407 的回复:
[quote=引用 14 楼 wq86019595 的回复:] [quote=引用 13 楼 u010223407 的回复:] 用户问题,先用navicat登录下看看有没有问题~~~估计也有同样的问题
看上面我的回复。哥们[/quote] 我也遇到过这个问题 然后直接重新用navicat创建了一个用户[/quote] 简单方便有效,但是原理是什么
我爱娃哈哈 2017-05-16
  • 打赏
  • 举报
回复
引用 14 楼 wq86019595 的回复:
[quote=引用 13 楼 u010223407 的回复:] 用户问题,先用navicat登录下看看有没有问题~~~估计也有同样的问题
看上面我的回复。哥们[/quote] 我也遇到过这个问题 然后直接重新用navicat创建了一个用户
老街的小麻雀 2017-05-16
  • 打赏
  • 举报
回复
引用 11 楼 lrx2011 的回复:
参考下 这两天在MyEclipse中开发Web项目时,连接MySQL数据库,出现问题:Access denied for user 'root'@'localhost' (using password:YES)。 经查找资料发现是root帐户默认不开放远程访问权限,所以需要修改一下相关权限。 解决方案: 打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。(WIN7默认安装,my.ini在C:\ProgramData\MySQL\MySQL Server 5.6) 重启MySQL服务。 通过命令行进入MySQL的BIN目录,输入“mysql -u root -p”(不输入密码),回车即可进入数据库。(WIN7默认安装,BIN目录为:C:\Program Files\MySQL\MySQL Server 5.6\bin) 执行“use mysql;”,使用mysql数据库。 执行“update user set password=PASSWORD("123456") where user='root';”(修改root的密码) 打开MySQL目录下的my.ini文件,删除最后一行的“skip-grant-tables”,保存并关闭文件。 重启MySQL服务。 在命令行中输入“mysql -u root -p 123456”,即可成功连接数据库。 完成以上步骤,MyEclipse也可成功连接MySQL了。
这个照做了,还是不行
老街的小麻雀 2017-05-16
  • 打赏
  • 举报
回复
引用 12 楼 ScottJane 的回复:
jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&useSSL=true类似与这种,为什么你的里面出现\=,\:,这种转义
看上面回复。 已经改了还是不行 jdbc.url=jdbc:mysql://127.0.0.1:3306/itemlibrary
老街的小麻雀 2017-05-16
  • 打赏
  • 举报
回复
引用 13 楼 u010223407 的回复:
用户问题,先用navicat登录下看看有没有问题~~~估计也有同样的问题
看上面我的回复。哥们
我爱娃哈哈 2017-05-16
  • 打赏
  • 举报
回复
用户问题,先用navicat登录下看看有没有问题~~~估计也有同样的问题
ScottJane 2017-05-16
  • 打赏
  • 举报
回复
jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&useSSL=true类似与这种,为什么你的里面出现\=,\:,这种转义
podd 2017-05-16
  • 打赏
  • 举报
回复
参考下 这两天在MyEclipse中开发Web项目时,连接MySQL数据库,出现问题:Access denied for user 'root'@'localhost' (using password:YES)。 经查找资料发现是root帐户默认不开放远程访问权限,所以需要修改一下相关权限。 解决方案: 打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。(WIN7默认安装,my.ini在C:\ProgramData\MySQL\MySQL Server 5.6) 重启MySQL服务。 通过命令行进入MySQL的BIN目录,输入“mysql -u root -p”(不输入密码),回车即可进入数据库。(WIN7默认安装,BIN目录为:C:\Program Files\MySQL\MySQL Server 5.6\bin) 执行“use mysql;”,使用mysql数据库。 执行“update user set password=PASSWORD("123456") where user='root';”(修改root的密码) 打开MySQL目录下的my.ini文件,删除最后一行的“skip-grant-tables”,保存并关闭文件。 重启MySQL服务。 在命令行中输入“mysql -u root -p 123456”,即可成功连接数据库。 完成以上步骤,MyEclipse也可成功连接MySQL了。
老街的小麻雀 2017-05-16
  • 打赏
  • 举报
回复
引用 3 楼 shayboke 的回复:
报错信息是你的密码错误,也有可能像楼上说的新装的数据库,密码为null还没有配置,在DOS里面用mysql命令测试你的登录情况!
jdbc.url=jdbc\:mysql\://localhost\:3306/itemlibrary?useUnicode\=true&characterEncoding\=utf-8 这个 已经 换成了 不转义的还是不行。 密码的话用 navicat工具登录是没有问题的
老街的小麻雀 2017-05-16
  • 打赏
  • 举报
回复
引用 8 楼 ScottJane 的回复:
java.sql.SQLException: Access denied for user 'root '@'localhost' (using password: YES)这句话是关键,是数据库本身的原因,你可以用sqlyog试着登录一下,也会报这个错,1楼说的很有道理。先把数据库弄通!
jdbc.url=jdbc\:mysql\://localhost\:3306/itemlibrary?useUnicode\=true&characterEncoding\=utf-8 这个 已经 换成了 不转义的还是不行。 密码的话用 navicat工具登录是没有问题的
ScottJane 2017-05-16
  • 打赏
  • 举报
回复
java.sql.SQLException: Access denied for user 'root '@'localhost' (using password: YES)这句话是关键,是数据库本身的原因,你可以用sqlyog试着登录一下,也会报这个错,1楼说的很有道理。先把数据库弄通!
加载更多回复(2)

67,543

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧