SQLyog连接MySQL8.0+报错:错误号码2058的解决方案
本文将总结如何解决 SQLyog 连接 MySQL8.0+ 时报错:错误号码2058
一、问题现象
使用SQLyog连接MySQL8.0+数据库时,报错:错误号码2058 Plugin caching_sha2_password could not be loaded
二、原因分析
出现这个问题,是因为 MySQL 从 8.0 版本开始,新增了caching_sha2_password
授权插件,并且新建用户时默认使用该插件进行加密,而你的 SQLyog 版本无法识别该加密方式加密的密码。
(多数情况下是你的SQLyog版本过时了,新的SQLyog已支持识别caching_sha2_password
加密方式的密码)
MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables
三、解决方案
1. 方案1:更新SQLyog版本
查看你的SQLyog安装路径下,是否有caching_sha2_password.dll
动态库,如果没有则说明你的SQLyog版本,不支持通过caching_sha2_password
加密的用户进行连接数据库。
查看了一下SQLyog的发布历史:Version History - 2019 - SQLyog Knowledge Base (webyog.com)
从SQLyog 13.1.3
开始,才支持caching_sha2_password
授权插件
如果你需要更新SQLyog,你可能需要 SQLyog 各版本下载与安装
2. 方案2:修改用户的授权插件
使用有mysql.user
表权限的用户连接mysql并执行如下命令:
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
授权插件更新用户密码,sqlyog@localhost
换为替换为你自己的user及host
3. 方案3:修复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
按顺序找配置文件,找到后打开配置文件,在配置文件的[mysqld]
下添加如下配置:
default-authentication-plugin=mysql_native_password
然后重启mysql服务
Windows 上重启服务
net stop mysqlnet start mysql
Linux 上重启服务
systemctl stop mysqld systemctl start mysqld
Docker 上重启mysql容器
docker restart mysql81
mysql81
使用你的 mysql容器名称或ID替换
重启完成后,mysql服务使用的默认加密授权插件就成了mysql_native_password
,然后新创建的用户如果不指定授权插件,那么创建完成后就使用默认插件加密了。
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)
此时再使用新创建的用户,就可以连接mysql8.0+的数据库了。
注意:对于已有的用户,如果使用的仍是caching_sha2_password
加密方式,那么仍无法用SQLyog连接,你可以使用方案2,重新设置其加密方式及密码。
四、最后总结
- 严格来说上述
方案3
、方案2
是一样的(不太推荐方案3)。方案3
仅是将服务器默认的授权插件改为了mysql_native_password
,它仅对新创建的用户起作用(前提是创建用户时没有指定授权插件),并不会影响已有的用户的加密方式。如果想使用已有用户连接mysql,需使用方案2
重新设置其授权插件及密码。 方案1
更新SQLyog的方案还是值得尝试的,毕竟是一劳永逸的事儿。更新SQLyog 13.1.3+
后,无论连接用户使用什么授权插件,都可连接上。
以上就是SQLyog连接MySQL8.0+报错:错误号码2058的解决方案的详细内容,更多关于SQLyog连接MySQL8.0+报错的资料请关注脚本之家其它相关文章!
相关文章
mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
Mysql进行数据备份,还原后进行回帖,出现以下错误代码,其实主要是导入数据重复的问题,将现在的数据表清空,重新导入即可2012-07-07centos6.4下mysql5.7.18安装配置方法图文教程
这篇文章主要为大家详细介绍了centos6.4下mysql5.7.18安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-07-07
最新评论