已解决:java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘ (using password: YES)

今天在搞软测一个作业 要用Tomcat整个古董项目

因为用到的东西都很老

大概就是因为旧版本的MySQL服务器使用mysql_native_password  但是

在MySQL 8.0及以后的版本中,默认的身份验证插件是caching_sha2_password

这是发生错误的主要原因

7d77d79effd4485dbeb615062e52d9a4.png

解决办法

找到my.ini文件,找到mysqld部分,(如果没有就直接增加这句话)将auth_native_password设置为1,新版本的客户端仍然能够连接到MySQL服务器,因为新版本的客户端支持多种身份验证插件,包括mysql_native_password

05d4d9f1fea747b6b7acf13e1a11960d.png

不必担心会影响现有的 新版本的项目 因为

当客户端尝试连接到服务器时,客户端和服务器会协商使用哪种身份验证插件。如果客户端支持mysql_native_password,那么即使服务器配置为使用caching_sha2_password,客户端也可以回退到使用mysql_native_password进行身份验证。

我知道 一定有人不知道my.ini在哪 

因为新版本之后 这个配置文件被放到了神秘的地方

所以我们要进入mysql客户端

输入show variables like 'datadir';

af6e732f4780401391d391abdf8b72e7.png

找到了这个文件 那么my.ini就在旁边

098e148cc8e3495ea98984cb52e26f8f.png

 

  1. 重启MySQL服务

    • 在Linux系统上,你可以使用以下命令重启MySQL服务:
       

      sudo systemctl restart mysql

    • 在Windows系统上,你可以通过服务管理器重启MySQL服务,或者使用命令行:
       
      net stop mysql
      net start mysql

如果你们跟我一样 启动完以后不能启动了

d089f5e2342b4811bf3ec28ba466dfa7.png

很好 那我们来下一步 

维修MySQL

请把以下教程记录下来因为以后你们可能要做无数次 如果你们经常要搞数据库

首先来到刚才的Data文件 备份里面的所有资料

a592bd241e404d6c8071ed31d638d4e2.png

然后 使用管理员权限打开cmd 

cd进入到你们安装的MySQL 的bin目录

操作如下

77e20db0b6634b628b5baf29f4503223.png

C:\Windows\System32>cd C:\Program Files\MySQL\MySQL Server 8.1\bin

C:\Program Files\MySQL\MySQL Server 8.1\bin>mysqld -remove MySQL
Service successfully removed.

C:\Program Files\MySQL\MySQL Server 8.1\bin>mysqld --initialize-insecure

C:\Program Files\MySQL\MySQL Server 8.1\bin>mysqld -install
Service successfully installed.

C:\Program Files\MySQL\MySQL Server 8.1\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。


C:\Program Files\MySQL\MySQL Server 8.1\bin>

 

好了  一切都好了

By  the way  若是数据没了 那就在备份里面自己拷贝进去 要是还在 那就God love you

 

 

 

 

评论 55
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

苏泽SuZe

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值