问题描述: 客户这边做数据库mysql应用负载,为了确保判断监视数据库状态是否正常的准确性,决定使用mysql健康检查作为mysql负载节点监视器,按照配置要求配置完成mysql健康检查,引用后测试发现mysql节点全部离线。
排查步骤: 1、检查mysql健康检查配置信息,并启用调试日志如下: 2、查看节点监视器调试日志为节点监视器异常 3、使用native客户端,用相同的数据库账号连接相同的数据库并进行查询结果都正常 4、在设备上进行抓包分析查看到如下报错信息: 5、根据抓包看到信息是协议版本不支持,跟客户确认当前mysql版本为8.0.28,连接成功的native客户端版本为native 15,而平台mysql节点监视器跟研发确认协议版本比较老,支持的最高数据库版本为mysql5.7
根本原因: 设备上mysql节点监视器客户端协议版本太老,最高支持mysql版本为5.7不支持mysql8.0.28的数据库导致。原因在于MySQL8.0换了加密插件,而数据库管理客户端还是原来旧版本的加密方式。
解决办法: 第一种:升级设备上mysql客户端版本协议,这个跟研发确认,目前暂时无法解决。 第二种:修改数据库加密方式,操作步骤如下: 1. mysql -u root -p 输入密码进入mysql数据库 2. 输入下面命令,更改加密方式 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; 3. 更新一下用户的密码这里的password为你修改的新密码。 mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '自己的mysql密码'; 4. 刷新权限,使自己的修改生效。 FLUSH PRIVILEGES; 5. 退出mysql: mysql>quit
|