NodeJS连接mysql,报错ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

我是mysql8.0以上的版本,在用NodeJS连接服务器中mysql数据库时开始报错

这表示服务器启动起来,但是数据库中密码协议出错,我从网上查到的结果告诉我,是mysql8.0支持了一个新的密码协议,但是NodeJS目前还没有支持导致的。

下面是我避坑后的解决方案,可能不适用于所有人

1. 登陆服务器中mysql

以管理员身份打开命令行,输入

mysql -u administrator -p

如果提示mysql不是可执行文件,可以在命令行中cd,直到mysql 中的bin目录,或者把mysql加入环境变量

注意:上面的root是你要修改的用户名,可能不是administrator,我的就是administrator

2. 输入密码

然后输入密码,进入mysql

3. 选择数据库

所以,首先我们需要选择数据库,在命令行中输入

use mysql

注意:这里就是mysql,不是别的名称,除非你修改了数据库中存储用户名密码的表的名称,但是这种几率很小,你动不到那里

如果选错数据库的话,会在后续密码置空操作中提示下述错误

4. 密码置空

如果原密码不置空,直接修改密码的话,会报错

密码置空操作,输入

update user set authentication_string='' where user='administrator';

其中上述administrator仍然为你需要修改密码协议的用户名

5. 刷新

此步骤很重要

flush privileges;

6. 修改密码及协议

我在这一步卡了好久
我修改密码协议,出现图中错误

查了很多资料,我明白了
打开数据库,mysql库,user表,可以看到

在我要修改的用户名前的host中是‘%’,而不是‘localhost’,所以我需要将命令中的 localhost 改为 %

alter user 'administrator'@'%' identified with mysql_native_password by '123456';

上述administrator为你需要修改密码的用户名,123456中为你的密码

至此,即完成全部步骤

mysql忘记密码修改等,网上很多教程好像不适用于mysql8.0,有时间把这部分写一下。

posted @   臭脚体育生  阅读(1020)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示