mysql系列:远程连接MySQL错误“plugin caching_sha2_password could not be loaded”的解决办法

目录

远程连接MySQL错误“plugin caching_sha2_password could not be loaded”的解决办法

概述

一、环境

二、问题描述

三、解决方法

第一种 升级SQLyog

SQLyog-12.0.8-0.x64

SQLyog-13.1.6-0.x64

第二种 修改身份验证插件

修改 mysql 密码策略

2. 进入mysql依次执行如下命令

3. 查看修改结果


远程连接MySQL错误“plugin caching_sha2_password could not be loaded”的解决办法

概述

        下面的环境不重要,重要的是你的 MySQL可视化工具(以 sqlyog 为例)和 MySQL 服务密码校验规则是否一致,mysql 5.7 默认密码校验规则是 mysql_native_password,MySQL 8.0 时默认为 caching_sha2_password,你可以进入MySQL ,使用 SELECT Host, User, plugin from mysql.user; 查看。

一、环境

系统:centos9
docker:18.09.1
mysql : least >= 8.0.20
sqlyog: 12.0.8-0

二、问题描述

        

今天试了一下在docker容器安装mysql,结果远程连接报错

远程连接docker 下的MySQL错误如下,即 无法加载插件缓存sha2密码,在MySQL 8.0中,caching_sha2_password是默认的身份验证插件,而不是mysql_native_password,服务器可以正常连接,本地cmd窗口 mysql -h xx.xx.xx.xx -P 3306 -u root -p 123456 可以正常连接,所以我猜测是我的sqlyog版本太旧了

三、解决方法

有两种解决办法,一种就是升级sqlyog,一种是修改mysql默认身份验证插件

第一种 升级SQLyog

我原来的版本为 SQLyog-12.0.8-0.x64 默认身份验证与mysql8.0以上不符,
SQLyog-13.1.6-0.x64 默认支持mysql8.0以上身份验证

百度网盘:SQLyog-13.1.6-0.x64Community.exe
链接: https://pan.baidu.com/s/1aE2HqJjO0xHymaobHyw9qQ

提取码: md3j

SQLyog-12.0.8-0.x64

SQLyog-13.1.6-0.x64

第二种 修改身份验证插件

如果你也是docker mysql错误,使用以下命令进入mysql容器,否则跳过下面两行命令直接进入修改MySQL密码策略

# 运行mysql, -d 守护线程保持后台运行
# -p 端口映射,如果你用的阿里云服务器,需要开放安全组(即端口号,自行设置,我的是33066) 
# -e 环境配置,此处设置登录密码 
# --name 为镜像重命名,不然系统会随机生成,重命名在你重启关闭删除直接使用名字会方便很多
# -v 挂载目录,主要挂载MySQL配置文件以及数据
docker run -d --restart=unless-stopped -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql mysql
# 进入容器
docker exec -it mysql /bin/bash
修改 mysql 密码策略

1. 登录mysql

mysql -h localhost -u root -p 

注意:MySQL版本更新很快,你可以直接尝试使用ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';该命令修改身份验证插件,如果修改成功,不用执行下面操作(初始化MySQL密码尽量设置复杂一点可以减少很多问题)

2. 进入mysql依次执行如下命令

如果你需要使用远程登录,将localhost 改为%,下面的‘123456’使用你自己的密码

# 修改本地登陆
# 修改密码过期规则----》永不过期
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; 
# 更新用户的密码修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; 
# 刷新权限
FLUSH PRIVILEGES;
# 重置密码(==非必须==)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

# 修改远程登陆
# 修改密码过期规则----》永不过期
ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; 
# 更新用户的密码修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新权限
FLUSH PRIVILEGES;
# 重置密码(==非必须==)
ALTER USER 'root'@'%' IDENTIFIED BY '123456';

如果报密码过期策略问题

这个是指你设置的密码太简单了,设置复杂一点,特殊字符,字母大小写,数字正常 如:@Admin.951753(如果你是新建用户报上面问题,只能使用此方法,如果创建成功想改简单密码可使用下面方法)

执行下面命令,将密码规则修改简单,不建议

SHOW VARIABLES LIKE 'validate_password%';  # 查看密码策略。 默认 MEDIUM
# set global validate_password.length=4;    # 将密码位数设置为 4
set global validate_password.policy=LOW;   # 密码策略修改为LOW,原值为MEDIUM
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;

3. 查看修改结果
SELECT Host, User, plugin from mysql.user;

至此本地和远程root用户密码策略修改完毕,若想修改其他用户,仿照上面命令设置。

远程连接测试

结果成功!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值