赞
踩
本地写了个一个项目后想上传到阿里云服务器(Windows)中,mysql+tomcat+jdk都已经配置好了,但就在项目运行时报错,显示如下
create connection error, url: jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=utf-8, errorCode 1045, state 28000 java.sql.SQLException: Access denied for user 'root '@'localhost' (using password: YES) ...
因为控制台显示 user 'root '@'localhost' (using password: YES) ,说明jdbc配置文件不存在问题,问题在于用户名或密码上。
刚开始查了几篇博客,下面将各位博主的博文建议汇总到一起,希望对你有所帮助。
- spring:
- datasource:
- data-username: root
- data-password: '123456'
- url: "jdbc:mysql://localhost:3306/jd?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8"
- driver-class-name: com.mysql.cj.jdbc.Driver
上面的datasource的配置中 使用了data-password、data-username导致了一直循环报错;只要将其改为password和username就可以了
- spring:
- datasource:
- username: root
- password: '123456'
- url: "jdbc:mysql://localhost:3306/jd?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8"
- driver-class-name: com.mysql.cj.jdbc.Driver
密码帐号都是对的,错在配置文件(db.properities或者spring-mvc.xml)里出现了空格。
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm?useUnicode=true&characterEncoding=utf-8
- jdbc.username=root
- jdbc.password=root
Debug时,无意中看待到
Access denied for user 'root '@'localhost' (using password: YES),发现配置文件"jdbc.username=root "在root后面多了两个空格,删掉重启一切正常。但是不明白的是com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection方法能过滤空格获取账号密码,但最后一直死循环报错。
总结下,不管druid能否过滤空格,过滤后怎么处理都要保证字段定义正确。
打开Navicat(或者其他的数据库管理工具均可)检测数据库的表是否 有叫 user 的(通常在mysql的数据库中) 如果有尽量改名
把这个密码改成明文root 或者你自己任意的密码 再次重启项目即可
(是否带引号取决于配置文件和spring版本)
- spring:(springboot版本2.1.4)
- datasource:
- url: jdbc:mysql://192.168.241.200/boot
- username: root
- password: '0000'
- driver-class-name: com.mysql.jdbc.Driver
- type: com.alibaba.druid.pool.DruidDataSource
此时若忘记扩引号,则会显示errorCode 1045, state 28000的bug,这一点不易发现。
查询了上述几个方法之后,依次实验之后发现依然不能解决问题,仍然显示errorCode 1045, state 28000的错误,而且是循环显示。
无奈,没有头绪,从最开始配置mysql慢慢往回倒。
最后发现将localhost的密码由123456改为root,其实可以说是第四个解决办法给予的提示,不过幸亏到最后解决了,便不再报上述error。
Bug:
- 循环报错
- ERROR 127784 — [reate-700837405] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://localhost:3306/jd?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8, errorCode 1045, state 28000
-
- java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: NO)
- at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.19.jar:8.0.19]
- at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.19.jar:8.0.19]
- at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.19.jar:8.0.19]
- at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836) ~[mysql-connector-java-8.0.19.jar:8.0.19]
- at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:456) ~[mysql-connector-java-8.0.19.jar:8.0.19]
- at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) ~[mysql-connector-java-8.0.19.jar:8.0.19]
- at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197) ~[mysql-connector-java-8.0.19.jar:8.0.19]
- at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156) ~[druid-1.1.21.jar:1.1.21]
- at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218) ~[druid-1.1.21.jar:1.1.21]
- at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) ~[druid-1.1.21.jar:1.1.21]
- at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1646) ~[druid-1.1.21.jar:1.1.21]
- at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1710) ~[druid-1.1.21.jar:1.1.21]
- at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2753) ~[druid-1.1.21.jar:1.1.21]
当然希望大佬看到这篇文章如有相同的问题请留下您的高见!
欢迎关注公众号:单身程序猿
自己做的公众号,希望收获你的关注~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。