项目场景:

提示:这里简述项目相关背景:

idea中运行yml文件连接数据库 出现“Access denied for user ‘root‘@‘localhost‘ (using password: YES)” 问题


问题描述

提示:这里描述项目中遇到的问题:

idea中运行yml文件连接数据库出现如下错误:

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:130)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
	at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:815)
	at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:438)
	at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:241)
	at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:189)
	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1682)
	at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1803)
	at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2928)

原因分析:

提示:这里填写问题的分析:

出错原因
using password: NO:表示输入没有输入密码就尝试登陆了
using password: YES:表示输入了密码,但密码错误

检查:mysql -u root -p

但是我们检查到数据库的用户名和密码都没错,连接数据库报错是哪的问题呢?

原因在yml中数字以0,1开头的,自动被认为是其他进制,而yml只支持二进制,八进制和十六进制。


解决方案:

提示:这里填写该问题的具体解决方案:

法一:在密码数字上加上双引号""

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: "000000"

法二:改密码,用SET PASSWORD命令

方式一

登录mysql执行以下语句

mysql -u root -p

按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:

Enter password:

若密码存在, 输入密码登录, 不存在则直接按回车登录。登录成功后你将会看到 Welcome to the MySQL monitor… 的提示语。

使用以下SQL语句更改用户密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

出现Query OK, 0 rows affected (0.36 sec),表示修改成功。

方式二

通过mysqladmin修改密码

root 用户可以使用 mysqladmin 命令来修改密码,mysqladmin 的语法格式如下:

mysqladmin -u username -h hostname -p password "newpwd"

语法参数说明如下:

  • usermame 指需要修改密码的用户名称,在这里指定为 root 用户;
  • hostname 指需要修改密码的用户主机名,该参数可以不写,默认是 localhost;
  • password 为关键字,而不是指旧密码;
  • newpwd 为新设置的密码,必须用双引号括起来。如果使用单引号会引发错误,可能会造成修改后的密码不是你想要的。
    在这里插入图片描述
警告:由于密码将以明文形式发送到服务器,请使用ssl连接以确保密码安全。

提示的这部分就不用管了。

更多推荐