高唐网站开发,ml域名免费注册,让移动网站,网站服务器站点是什么意思文章目录 一、问题现象二、原因分析三、解决方案1. 方案1#xff1a;更新SQLyog版本2. 方案2#xff1a;修改用户的授权插件3. 方案3#xff1a;修复my.cnf 或 my.ini配置文件 四、最后总结 本文将总结如何解决 SQLyog 连接 MySQL8.0 时报错#xff1a;错误号码2058
一、问… 文章目录 一、问题现象二、原因分析三、解决方案1. 方案1更新SQLyog版本2. 方案2修改用户的授权插件3. 方案3修复my.cnf 或 my.ini配置文件 四、最后总结 本文将总结如何解决 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 sqlyoglocalhost 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 sqlyoglocalhost IDENTIFIED WITH mysql_native_password BY 1234qwer使用mysql_native_password 授权插件更新用户密码sqlyoglocalhost换为替换为你自己的user及host
3. 方案3修复my.cnf 或 my.ini配置文件
查找配置文件如果你的mysql是安装在Window下
C:\Users\Administratormysql --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.cnforder of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf按顺序找配置文件找到后打开配置文件在配置文件的[mysqld]下添加如下配置
default-authentication-pluginmysql_native_password然后重启mysql服务 Windows 上重启服务
net stop mysql
net start mysqlLinux 上重启服务
systemctl stop mysqld
systemctl start mysqldDocker 上重启mysql容器
docker restart mysql81mysql81使用你的 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后无论连接用户使用什么授权插件都可连接上。