MySQL Error number: MY-013800; Symbol: ER_AUTHENTICATION_PLUGIN_AUTH_DATA_CORRUPT; SQLSTATE: HY000

文档解释

Error number: MY-013800; Symbol: ER_AUTHENTICATION_PLUGIN_AUTH_DATA_CORRUPT; SQLSTATE: HY000

Message: FIDO device authenticator data corrupt.

错误说明

MY-013800(ER_AUTHENTICATION_PLUGIN_AUTH_DATA_CORRUPT)消息,表明MySQL服务器在处理客户端的连接请求时,验证插件读取的用户验证数据有损毁或不可识别状态。它们可能会以初始化状态存储,或者可能完全损坏,从而让服务器无法确定用户的验证细节。

常见案例

如果MySQL实例将其所使用的验证插件删除,则可能会引发此错误(如果没有正确的更新元数据)。而不是配置不正确或无效的验证插件。如果MySQL实例在重新启动时损坏或丢失了其因变量或用户表,则也可能会发生这种情况。

解决方法

客户端收到此错误时,表明服务器已拒绝其连接请求。为了解决这个问题,首先要确定导致数据损坏的原因,并采取恰当的措施来解决它。幸运的是,在大多数情况下,MySQL可以自行恢复用户验证数据。

从MySQL 5.7.5开始,重置ahat表时,MySQL实例会自动创建’mysql.session’表,其中包含校准的会话条目.重新定向到’MySQL.session’表,以恢复该机器的会话状态。但能以更少的时间来重启,但重新启动服务器,并在启动时将’sql_mode’变量设置为空,以避免使用错误的编码器将其还原到未初始化状态,也是一种可行的解决方案。

一旦服务器启动,请查看服务器的error log文件以更清楚的信息来源,这种情况是可能的。使用MySQL客户端修复任何遗漏的用户数据,对任何遗失的用户表进行重建,但在 [ERROR]消息中报告丢失用户特定数据前,请更新MySQL服务器的认证插件配置。

除了大规模更改之外,您还可以尝试删除ahat表中的任何现有会话条目,或使用mysql_fix_privilege_tables来检查和修复数据库中所有系统用户(由root 用户执行)。

另一个可能的解决方案是在MySQL服务器上手动创建插件相关的表,这可以使MySQL服务器可以访问到正确的用户验证数据。

一般来说,以上解决方案都是有效的,但此外,可以考虑使用MySQL提供的存储验证数据的特殊表,以重新建立用户特定数据,而无需重新安装或升级MySQL数据库实例。这些系统表的正确使用可以正确确定客户端的认证要求,从而有效地解决MySQL服务器上发生的MY-013800(ER_AUTHENTICATION_PLUGIN_AUTH_DATA_CORRUPT)错误。

你可能感兴趣的