0报2058错误的完美解决方法,mysql客户端不支持认证协议引发的问题

引言

前言

一、创设客户和授权

用SQLyog连接MySQL8.0(社区版:mysql-installer-community-8.0.15.0.msi卡塔尔(قطر‎,现身错误2058(Plugin
caching_sha2_password could not be
loaded:xxxxState of Qatar,通过查询资料领会了该错误的原由并在本文中建议了该难题的方案。

mysql模块是贰个开源的、JavaScript编写的MySQL驱动,可以在Node.js应用中来操作MySQL。但在动用进程中,现身了“EXC90_NOT_SUPPORTED_AUTH_MODE”问题。

在mysql8.0创立客户和授权和事情发生前不太相符了,其实严苛上来说,也不可能说是不平等,只好算得更严酷,mysql8.0索要先成立客商和设置密码,然后技艺授权。

原因

本文介绍了出现该难题的原由及减轻方案。

#先创建一个用户create user 'hong'@'%' identified by '123123';#再进行授权grant all privileges on *.* to 'hong'@'%' with grant option;

该错误提醒如下图所示:

报错新闻

即便依旧用原本5.7的这种情势,会报错误:

切实原因:新的MySQL 8.0装置,在初叶化数据目录时,将
‘root’@’localhost’成立帐户,并且该帐户caching_sha2_password私下认可使用,密码的加密方法产生了改变,由此SQLyog不可能平常拆解剖判,才报出如上错误。

当本身思索利用mysql模块来三回九转MySQL 8时,现身了之类错误音信:

grantallprivilegeson*北京pk赛车官网下载,.*to’sroot’@’%’identifiedby’123123′;

ERROR1064(42000):YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondsto
yourMySQLserverversionfortherightsyntaxtousenear’identifiedby’123123”atline1

解决方案

D:workspaceGithubnodejs-book-samplessamplesmysql-demoindex.js:17throw error;^Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL clientat Handshake.Sequence._packetToError (D:workspaceGithubnodejs-book-samplessamplesmysql-demonode_modulesmysqllibprotocolsequencesSequence.js:47:14)at Handshake.ErrorPacket (D:workspaceGithubnodejs-book-samplessamplesmysql-demonode_modulesmysqllibprotocolsequencesHandshake.js:123:18)at Protocol._parsePacket (D:workspaceGithubnodejs-book-samplessamplesmysql-demonode_modulesmysqllibprotocolProtocol.js:291:23)at Parser._parsePacket (D:workspaceGithubnodejs-book-samplessamplesmysql-demonode_modulesmysqllibprotocolParser.js:433:10)at Parser.write (D:workspaceGithubnodejs-book-samplessamplesmysql-demonode_modulesmysqllibprotocolParser.js:43:10)at Protocol.write (D:workspaceGithubnodejs-book-samplessamplesmysql-demonode_modulesmysqllibprotocolProtocol.js:38:16)at Socket.anonymous (D:workspaceGithubnodejs-book-samplessamplesmysql-demonode_modulesmysqllibConnection.js:91:28)at Socket.anonymous (D:workspaceGithubnodejs-book-samplessamplesmysql-demonode_modulesmysqllibConnection.js:525:10)at Socket.emit (events.js:196:13)at addChunk (_stream_readable.js:290:12)--------------------at Protocol._enqueue (D:workspaceGithubnodejs-book-samplessamplesmysql-demonode_modulesmysqllibprotocolProtocol.js:144:48)at Protocol.handshake (D:workspaceGithubnodejs-book-samplessamplesmysql-demonode_modulesmysqllibprotocolProtocol.js:51:23)at Connection.connect (D:workspaceGithubnodejs-book-samplessamplesmysql-demonode_modulesmysqllibConnection.js:119:18)at Object.anonymous (D:workspaceGithubnodejs-book-samplessamplesmysql-demoindex.js:12:12)at Module._compile (internal/modules/cjs/loader.js:759:30)at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)at Module.load (internal/modules/cjs/loader.js:628:32)at Function.Module._load (internal/modules/cjs/loader.js:555:12)at Function.Module.runMain (internal/modules/cjs/loader.js:826:10)at internal/main/run_main_module.js:17:11

二、MySQL8.0 的中远间距链接

以管理员运维—-,如下图所示:

差之毫厘原因

MySQL8.0 安装实现前边世不可能远程链接的景象,那是因为MySQL8.0只帮助localhost 访谈,大家必须设置一下才得以远程访谈。

键入root账号的密码如下所示.

引致那几个错误的由来是,这两天,最新的mysql模块未有完全协理MySQL
8的“caching_sha2_password”加密方法,而“caching_sha2_password”在MySQL
第88中学是私下认可的加密方法。由此,上边包车型地铁秘籍命令是暗中认可已经运用了“caching_sha2_password”加密方法,该账号、密码不恐怕在mysql模块中利用。

实际设置步骤如下:

依据以下sql格式输入指令,当中password是指root账号的密码。

mysql ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';Query OK, 0 rows affected (0.12 sec)

① 登录MySQL

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

减轻方式

实施命令为:mysql -u root -p

推行该命令,结果为Query OK表达修正成功,如下图所示。

消除方法是从新改正顾客root的密码,并内定mysql模块能够帮忙的加密方法:

回车的前边输入密码

用SQLyog重新连接MySQL,能够成功连接。当时翻开mysql数据库中的user表,开采root账号的插件名称爆发了变化,如下所示。

mysql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';Query OK, 0 rows affected (0.12 sec)

② 选择 mysql 数据库

总结

上述话语,显示钦定了运用“mysql_native_password”的加密方法。这种措施是在mysql模块能够协理。

推行命令为:use mysql;

MySQL新本子有它的优势,也是有自然缺欠,再选拔从前大家要丰富的历练,防止现身部分不可预感的主题素材。独有不但的发掘难题,消除难题,计算消除措施,才具循环不断的升迁自个儿,若本文能帮你询问依旧解决该难点,希望增添关心!

再此运转应用,能够阅览如下的调节台出口新闻:

查看mysql 数据库中存款和储蓄的客商音讯的 user 表。

$ node index.jsThe result is: RowDataPacket { user_id: 1, username: '老卫' }

③翻看mysql 数据库的 user 表中当前 root 客商的相干信息

其中,“RowDataPacket { user_id: 1, username: ‘老卫’
}”便是数据库查询的结果。

推行命令为:select host,user,authentication_string,plugin from user;

源码

施行完命令后显得三个表格, root 客户的 host默许呈现的
localhost,表明只扶植本地访谈,不容许远程访谈。

本节例子能够在的“mysql-demo”应用中找到。

④ 修正 host 的暗许配置

如上正是本文的全体内容,希望对大家的学习抱有助于,也期望我们多都赐教脚本之家。

试行命令为:update user set host=’%’ where user=’root’;

⑤ 刷新

执行命令为:flush privileges;

后面认为那样就能够了,然后呢,在用navicat举行mysql的长途连接时,现身了弹窗报错:

现身那一个缘故是mysql8
早前的版本中加密法规是mysql_native_password,而在mysql8事后,加密法则是caching_sha2_password,
消灭难点方法有三种,一种是升高navicat驱动,一种是把mysql顾客登陆密码加密准则还原成mysql_native_password.
作者用是第二种艺术 :

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';#更新一下用户的密码FLUSH PRIVILEGES; #刷新权限

主题材料就一蹴而就了。

mysql8.0客商密码设置注意事项

在MySQL
8.0.11中,caching_sha2_password是暗许的身份验证插件,并非未来的mysql_native_password。有关此校正对服务器操作的熏陶以致服务器与顾客端和连接器的宽容性的音讯,请参阅caching_sha2_password作为首选的身份验证插件。(翻译自)

前日在新服务上安排安装mysql8.0.11时,像过去一律设置mysql密码,设置成功后在shell下输入mysql
-u root
-p,再输入密码能健康步入,但在phpmyadmin或直接用上的一连,均提醒不大概连接,具体报错新闻为

mysqli_real_connect(): The server requested authentication method
unknown to the client [sha256_password]

搜了一圈,找到合立陶宛共和国语档才开掘从8.0.11本子起,不再像mysql5.7及以前版本那样,设置客商密码时暗中同意的证实办法为caching_sha2_password,借使开采跳级mysql8.0.11后原本的顺序不可能接二连三mysql,可快捷在mysql
command line
client客户端用下边包车型地铁吩咐设置成mysql5.7及从前版本的密码验证办法,同不常候MYSQL8.0.11下改进密码的章程与原来也十分的小学一年级样,原先的片段改进密码的指令在mysql8.0.11下不可能利用。

 use mysql  ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';  FLUSH PRIVILEGES; 

上述正是本文的全体内容,希望对我们的读书抱有助于,也期望大家多都赐教脚本之家。

发表评论

电子邮件地址不会被公开。 必填项已用*标注