SQLyog連接MySQL8.0+報(bào)錯(cuò):錯(cuò)誤號(hào)碼2058的解決方案
本文將總結(jié)如何解決 SQLyog 連接 MySQL8.0+ 時(shí)報(bào)錯(cuò):錯(cuò)誤號(hào)碼2058
一、問(wèn)題現(xiàn)象
使用SQLyog連接MySQL8.0+數(shù)據(jù)庫(kù)時(shí),報(bào)錯(cuò):錯(cuò)誤號(hào)碼2058 Plugin caching_sha2_password could not be loaded

二、原因分析
出現(xiàn)這個(gè)問(wèn)題,是因?yàn)?MySQL 從 8.0 版本開(kāi)始,新增了caching_sha2_password授權(quán)插件,并且新建用戶時(shí)默認(rèn)使用該插件進(jìn)行加密,而你的 SQLyog 版本無(wú)法識(shí)別該加密方式加密的密碼。
(多數(shù)情況下是你的SQLyog版本過(guò)時(shí)了,新的SQLyog已支持識(shí)別caching_sha2_password加密方式的密碼)
MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables

三、解決方案
1. 方案1:更新SQLyog版本
查看你的SQLyog安裝路徑下,是否有caching_sha2_password.dll動(dòng)態(tài)庫(kù),如果沒(méi)有則說(shuō)明你的SQLyog版本,不支持通過(guò)caching_sha2_password加密的用戶進(jìn)行連接數(shù)據(jù)庫(kù)。

查看了一下SQLyog的發(fā)布?xì)v史:Version History - 2019 - SQLyog Knowledge Base (webyog.com)
從SQLyog 13.1.3開(kāi)始,才支持caching_sha2_password授權(quán)插件
如果你需要更新SQLyog,你可能需要 SQLyog 各版本下載與安裝
2. 方案2:修改用戶的授權(quán)插件
使用有mysql.user表權(quán)限的用戶連接mysql并執(zhí)行如下命令:
mysql> ALTER USER 'sqlyog'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234qwer'; Query OK, 0 rows affected (0.03 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.03 sec) mysql> SELECT user,host,plugin FROM mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | caching_sha2_password | | sqlyog | localhost | mysql_native_password | +------------------+-----------+-----------------------+ 5 rows in set (0.00 sec)
解釋:ALTER USER 'sqlyog'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234qwer',使用mysql_native_password 授權(quán)插件更新用戶密碼,sqlyog@localhost換為替換為你自己的user及host
3. 方案3:修復(fù)my.cnf 或 my.ini配置文件
查找配置文件(如果你的mysql是安裝在Window下):
C:\Users\Administrator>mysql --help | findstr "my.ini" C:\WINDOWS\my.ini C:\WINDOWS\my.cnf C:\my.ini C:\my.cnf D:\Chen\MySoft\mysql-8.1.0-winx64\my.ini D:\Chen\MySoft\mysql-8.1.0-winx64\my.cnf
查找配置文件(如果你的mysql是安裝在Linux或docker里):
sh-4.4# mysql --help | grep 'my.cnf'
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
按順序找配置文件,找到后打開(kāi)配置文件,在配置文件的[mysqld]下添加如下配置:
default-authentication-plugin=mysql_native_password

然后重啟mysql服務(wù)
Windows 上重啟服務(wù)
net stop mysqlnet start mysql
Linux 上重啟服務(wù)
systemctl stop mysqld systemctl start mysqld
Docker 上重啟mysql容器
docker restart mysql81
mysql81使用你的 mysql容器名稱或ID替換
重啟完成后,mysql服務(wù)使用的默認(rèn)加密授權(quán)插件就成了mysql_native_password,然后新創(chuàng)建的用戶如果不指定授權(quán)插件,那么創(chuàng)建完成后就使用默認(rèn)插件加密了。
mysql> show variables like 'default_authentication_plugin'; +-------------------------------+-----------------------+ | Variable_name | Value | +-------------------------------+-----------------------+ | default_authentication_plugin | mysql_native_password | +-------------------------------+-----------------------+ 1 row in set (0.01 sec) mysql> CREATE USER 'sqlyog'@'%' IDENTIFIED BY '1234qwer'; Query OK, 0 rows affected (0.04 sec) mysql> GRANT ALL PRIVILEGES ON *.* TO 'sqlyog'@'%'; Query OK, 0 rows affected (0.02 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.01 sec) mysql> SELECT user,host,plugin FROM mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | root | % | caching_sha2_password | | sqlyog | % | mysql_native_password | | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | caching_sha2_password | +------------------+-----------+-----------------------+ 6 rows in set (0.00 sec)
此時(shí)再使用新創(chuàng)建的用戶,就可以連接mysql8.0+的數(shù)據(jù)庫(kù)了。

注意:對(duì)于已有的用戶,如果使用的仍是caching_sha2_password加密方式,那么仍無(wú)法用SQLyog連接,你可以使用方案2,重新設(shè)置其加密方式及密碼。
四、最后總結(jié)
- 嚴(yán)格來(lái)說(shuō)上述
方案3、方案2是一樣的(不太推薦方案3)。方案3僅是將服務(wù)器默認(rèn)的授權(quán)插件改為了mysql_native_password,它僅對(duì)新創(chuàng)建的用戶起作用(前提是創(chuàng)建用戶時(shí)沒(méi)有指定授權(quán)插件),并不會(huì)影響已有的用戶的加密方式。如果想使用已有用戶連接mysql,需使用方案2重新設(shè)置其授權(quán)插件及密碼。 方案1更新SQLyog的方案還是值得嘗試的,畢竟是一勞永逸的事兒。更新SQLyog 13.1.3+后,無(wú)論連接用戶使用什么授權(quán)插件,都可連接上。
以上就是SQLyog連接MySQL8.0+報(bào)錯(cuò):錯(cuò)誤號(hào)碼2058的解決方案的詳細(xì)內(nèi)容,更多關(guān)于SQLyog連接MySQL8.0+報(bào)錯(cuò)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- SQLyog連接MySQL8.0+報(bào)錯(cuò):錯(cuò)誤碼2058的解決方案
- SQLyog連接不上mysql問(wèn)題的解決方法(按照步驟,包解決)
- MYSQL與sqlyog連接的實(shí)現(xiàn)
- SQLyog錯(cuò)誤號(hào)碼MySQL?plugin?caching_sha2_password?could?not?be?loaded的解決方法
- MySQL與sqlyog安裝教程圖文詳解
- SQLyog連接MySQL8.0報(bào)2058錯(cuò)誤的完美解決方法
- mysql使用SQLyog導(dǎo)入csv數(shù)據(jù)不成功的解決方法
- 使用SQLyog管理MySQL數(shù)據(jù)庫(kù)連接的實(shí)現(xiàn)
相關(guān)文章
Mysql定時(shí)數(shù)據(jù)庫(kù)備份實(shí)現(xiàn)的保姆級(jí)教程
數(shù)據(jù)備份本身主要是為了預(yù)防一些意外,例如服務(wù)器或者個(gè)人電腦的硬件故障、人為的錯(cuò)誤操作等情況,這篇文章主要給大家介紹了Mysql定時(shí)數(shù)據(jù)庫(kù)備份實(shí)現(xiàn)的保姆級(jí)教程,需要的朋友可以參考下2024-12-12
mysql update語(yǔ)句的執(zhí)行過(guò)程詳解
本文詳細(xì)介紹了,mysql中update語(yǔ)句的執(zhí)行過(guò)程,系統(tǒng)全面的學(xué)習(xí)下update更新語(yǔ)句的執(zhí)行過(guò)程,有需要的朋友可以參考下2020-03-03
使用MySQL如何實(shí)現(xiàn)分頁(yè)查詢
這篇文章主要介紹了使用MySQL如何實(shí)現(xiàn)分頁(yè)查詢,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
MySQL的match函數(shù)在sp中使用BUG解決分析
這篇文章主要為大家介紹了MySQL的match函數(shù)在sp中使用BUG解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
windows下mysql 5.7版本中修改編碼為utf-8的方法步驟
mysql的默認(rèn)編碼是拉?。╨atin1),當(dāng)輸入中文的時(shí)候就會(huì)報(bào)錯(cuò),所以需要將編碼修改為utf8,從網(wǎng)上找了相關(guān)教程都不可以,索性自己摸索后分享給大家,下面這篇文章主要給大家介紹了在mysql 5.7版本中如何修改編碼為utf-8的方法步驟,需要的朋友可以參考下。2017-06-06
MySQL中的binlog相關(guān)命令和恢復(fù)技巧
這篇文章主要介紹了MySQL中的binlog相關(guān)命令和恢復(fù)技巧,需要的朋友可以參考下2014-05-05
簡(jiǎn)單了解MYSQL數(shù)據(jù)庫(kù)優(yōu)化階段
這篇文章主要介紹了簡(jiǎn)單了解MYSQL數(shù)據(jù)庫(kù)優(yōu)化階段,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04

