今天从服务器拉取一个项目jar包部署到本地运行,运行时候报了这个错误,上网查找一资料后解决,加上自己的实践与思考在此记录一下。

问题原因:

这是mysql 8.0版本才出现的问题,原因是mysql 8.0 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。

所以一般这种报错由于本地的MySQL使用的是最新版8.0版本,而打包的项目使用的则是比较低的版本,可以解释说是版本冲突产生的问题。

解决方案:

版本冲突那么首先想到的便是卸载当前较新的版本,安装较低版本的MySQL,便可以解决问题。

不过这种方法太low了属于见招拆招,以后遇到sql文件低版本运行报错情况又得更换数据库,太过麻烦了。

因此我们可以选择修改身份验证机制:

使用nacivat工具的可以点击  工具——命令列界面进入MySQL的操作界面直接输入命令操作。

没有使用的也可以通过在mysql的bin目录下打开cmd(默认是C:\Program Files\MySQL\MySQL Server 8.0\bin)输入:mysql -uroot -p     接着输入密码   进行登录操作。

登录成功后即进入了命令列界面逐行输入以下代码即可完美解决:

alter user 'root'@'localhost' identified by '你的密码' password expire never;

alter user 'root'@'localhost' identified with mysql_native_password by '你的密码'

flush privileges;

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐