MySQL报错MY-010749插件无法设置持久选项,远程帮忙修复思路分享
- 问答
- 2026-01-16 02:31:26
- 1
开始)
最近在处理一个客户的MySQL数据库问题时,遇到了一个启动错误,错误代码是MY-010749,这个错误信息大致是说,MySQL服务器在启动过程中,尝试为某个插件设置一个“持久化”的配置选项,但是失败了,因为是在远程协助,不能直接登录服务器,所以整个排查过程需要依靠和客户的沟通以及他提供的信息来进行,下面我就把这个排查和解决的思路分享一下,希望能给遇到类似情况的朋友一些参考。
当客户告诉我MySQL启动不了,并且发来了错误日志截图时,我看到的典型错误信息是这样的:“[ERROR] [MY-010749] [Server] Failed to set persistent options for plugin ‘某个插件名’.”,这里的核心是两个关键词:“某个插件名”和“持久化选项”,我的第一步思路就是搞清楚这两个东西具体指的是什么。
第一步,确定是哪个插件出了问题,错误信息里明确指出了插件的名字,这是最重要的线索,客户发来的日志显示插件名是caching_sha2_password,这是一个MySQL 8.0版本开始常用的身份认证插件,知道是它之后,我心里就有个底了,问题很可能和用户账户的密码认证设置有关。

第二步,理解什么是“持久化选项”,根据MySQL的官方文档说明(来源:MySQL 8.0 Reference Manual),持久化选项指的是那些通过SET PERSIST或SET PERSIST_ONLY命令设置的配置参数,这些命令的特别之处在于,它们不仅会改变当前正在运行的MySQL实例的配置,还会把配置更改写入到一个名为mysqld-auto.cnf的JSON格式文件中,这样,当MySQL服务器下次重启时,会自动读取这个文件里的配置,让更改永久生效,这比传统只修改my.cnf文件的方式更灵活。
第三步,分析失败的原因,既然错误发生在启动阶段,说明MySQL在读取mysqld-auto.cnf文件时,尝试应用里面为caching_sha2_password插件记录的某个配置,但这个操作失败了,导致失败的可能原因有几个,我需要引导客户逐一排查。
-
mysqld-auto.cnf文件本身损坏或格式错误:这是最常见的原因之一,这个文件是JSON格式的,如果因为某种原因(比如手动编辑不当、写入过程中服务器意外崩溃)导致格式不对,MySQL就无法正确解析它,从而在启动时报错,我让客户检查这个文件的位置,通常在MySQL的数据目录(datadir)下,我让他尝试用文本编辑器打开这个文件,看看是不是一个有效的JSON格式,如果客户不熟悉JSON,我让他直接发给我看,果然,文件末尾缺少了一个闭合的括号,导致JSON格式不完整。
-
插件本身不可用或不存在:虽然可能性较小,但也需要确认,是不是在之前的管理中不小心卸载了这个插件,但
mysqld-auto.cnf里还残留着它的配置项,我让客户在MySQL能成功启动时(我们后来通过临时跳过这个文件启动了,方法见后文)执行SHOW PLUGINS;命令,确认caching_sha2_password插件确实处于ACTIVE状态,排除了这个可能。 -
配置选项的值不合法:有可能之前通过
SET PERSIST设置的某个值,对于当前版本的MySQL或者当前的环境是不被接受的,这就需要检查mysqld-auto.cnf文件里,关于caching_sha2_password的具体配置是什么,但由于文件已经损坏,我们无法直接看到具体是哪个选项出了问题。
第四步,制定解决方案,既然根本原因是mysqld-auto.cnf文件损坏,那么修复方案就围绕这个文件展开,在远程协助中,我给了客户几个选择:

-
方案一(推荐):尝试修复文件,如果文件只是轻微损坏,比如像我们遇到的只是少了括号,可以指导客户手动修复JSON格式,修复完成后,再重启MySQL,这是最干净的解决方式,能保留所有其他的持久化配置。
-
绕过问题文件启动,然后重建,如果文件损坏严重,或者客户不敢手动修改,可以采用这个方案,我让客户在启动MySQL的命令行中,加上
--no-defaults选项,或者更精确地使用--persisted-globals-load=OFF参数,这个参数的作用是告诉MySQL启动时不要加载mysqld-auto.cnf文件,这样MySQL就能正常启动了,启动成功后,连接到MySQL,执行RESET PERSIST命令,这个命令会清空所有的持久化设置,并删除(或清空)有问题的mysqld-auto.cnf文件,清空之后,再根据需要,重新使用SET PERSIST设置那些确实需要持久化的参数,这是一个一劳永逸的方法,虽然会丢失之前的持久化配置,但确保了文件的正确性。 -
直接删除问题文件,这是一个更粗暴但往往很有效的方法,直接让客户停止MySQL服务,然后进入数据目录,将
mysqld-auto.cnf文件重命名(比如改为mysqld-auto.cnf.bak)或直接删除,然后再次启动MySQL,效果和方案二中的RESET PERSIST类似,MySQL会创建一个全新的、空的mysqld-auto.cnf文件,需要注意的是,这会丢失所有持久化配置。
结合客户的情况,他选择了方案二,因为他记不清之前具体持久化了哪些设置,觉得重新设置一遍更放心,我们通过--persisted-globals-load=OFF参数成功启动MySQL,然后执行了RESET PERSIST,之后重启MySQL就完全正常了。
遇到MY-010749错误,不要慌,核心思路就是锁定出问题的插件,然后聚焦于mysqld-auto.cnf这个持久化配置文件,排查它的格式是否正确、内容是否合法,解决方案从修复、重建到删除,有多种选择,可以根据实际情况灵活运用,远程协助虽然不能亲手操作,但通过清晰的逻辑引导和有效的沟通,同样可以快速定位并解决问题。
结束)
本文由度秀梅于2026-01-16发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/81529.html
