mysql获取数据库账号密码报错errorCode 1045, state 28000——常见5种解决办法

本地写了个一个项目后想上传到阿里云服务器(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配置文件不存在问题,问题在于用户名或密码上。

刚开始查了几篇博客,下面将各位博主的博文建议汇总到一起,希望对你有所帮助。

1.username误写做name或添加多余的字符

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

2.连接配置中出现空格

密码帐号都是对的,错在配置文件(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能否过滤空格,过滤后怎么处理都要保证字段定义正确。

3.localhost密码密文改明码

打开Navicat(或者其他的数据库管理工具均可)检测数据库的表是否 有叫 user 的(通常在mysql的数据库中) 如果有尽量改名 

在这里插入图片描述

打开这张User表

在这里插入图片描述

把这个密码改成明文root 或者你自己任意的密码 再次重启项目即可

4.密码带引号或忘记带引号

(是否带引号取决于配置文件和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,这一点不易发现。

5.修改密码

查询了上述几个方法之后,依次实验之后发现依然不能解决问题,仍然显示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]

当然希望大佬看到这篇文章如有相同的问题请留下您的高见!

 

欢迎关注公众号:单身程序猿

自己做的公众号,希望收获你的关注~

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vax_Loves_1314

打赏的小盆友都很可耐~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值