MySQL错误日志被mysql_native_password弃用警告淹没,求助适配新认证插件
解决MySQL Router使用caching_sha2_password替代mysql_native_password的问题
问题根源
你遇到的情况是:MySQL InnoDB Cluster已将默认认证插件设为caching_sha2_password,但之前引导的MySQL Router实例对应的数据库用户仍使用mysql_native_password,每次连接都会触发弃用警告,导致日志暴涨。
解决方案步骤
1. 更新现有MySQL Router用户的认证插件
直接修改数据库中所有mysql_router前缀用户的认证插件,并重新生成符合caching_sha2_password要求的密码哈希:
-- 逐个更新所有mysql_router用户,替换为实际用户名和密码 ALTER USER 'mysql_router11_mqhk6m29wfw8'@'%' IDENTIFIED WITH caching_sha2_password BY '你的Router用户密码'; ALTER USER 'mysql_router12_kfpd8reiyr1c'@'%' IDENTIFIED WITH caching_sha2_password BY '你的Router用户密码'; ALTER USER 'mysql_router1_22dtj6g8hdu5'@'%' IDENTIFIED WITH caching_sha2_password BY '你的Router用户密码'; -- 重复执行上述命令覆盖所有mysql_router用户
执行完成后刷新权限:
FLUSH PRIVILEGES;
2. 验证MySQL Router配置兼容性
检查MySQL Router的配置文件(通常为/etc/mysqlrouter/mysqlrouter.conf),确保没有强制指定旧认证插件的配置项。新版本MySQL Router默认支持caching_sha2_password,无需额外配置,若发现类似以下内容需删除或修改:
# 若存在则删除或修改为caching_sha2_password default_authentication_plugin = mysql_native_password
3. 重启MySQL Router实例
让配置和用户认证变更生效:
# 针对systemd系统 systemctl restart mysqlrouter # 针对sysvinit系统 service mysqlrouter restart
4. 清理膨胀的错误日志(可选)
临时解决磁盘空间问题:
# 先备份日志文件 cp /var/log/mysql/error.log /var/log/mysql/error.log.$(date +%Y%m%d) # 清空当前日志文件 truncate -s 0 /var/log/mysql/error.log
预防未来问题
后续新引导MySQL Router实例时,由于集群已设置default_authentication_plugin = caching_sha2_password,执行mysqlrouter --bootstrap命令时会自动创建使用caching_sha2_password的Router用户,无需额外配置。
内容的提问来源于stack exchange,提问作者Medjaro
相关产品推荐
相关产品推荐

