连接MariaDB时收到意外authentication switch request问题求助
MariaDB 连接时重复返回mysql_native_password认证切换请求的排查
- 优先检查客户端握手响应包的能力标志位:MariaDB对
CLIENT_PLUGIN_AUTH(0x00080000)标志位的校验比MySQL更严格。如果未设置该标志,即便你指定了mysql_native_password插件,服务器仍会触发“认证切换”流程——本质是强制要求客户端重新以指定插件提交认证信息。 - 核对密码加密的种子使用逻辑:确认你完整使用了服务器初始握手包中的全部随机种子数据。如果只截取了部分种子,加密后的密码会验证失败,服务器会返回插件相同的切换请求,实际是重试提示。
- 验证插件名称的编码与长度:确保
mysql_native_password的字符串长度计算准确(含末尾空终止符共20字节),且采用UTF-8编码。长度错误会导致服务器无法识别插件,进而触发无意义的切换请求。 - 排查服务器端配置:
- 本地实例:执行
SHOW VARIABLES LIKE 'default_authentication_plugin';确认默认插件为mysql_native_password - AWS实例:检查控制台的数据库参数组配置,确保
default_authentication_plugin未被修改为其他插件
- 本地实例:执行
从你提供的数据包记录来看,重点核对以下几点:
- 客户端响应中是否开启了
CLIENT_PLUGIN_AUTH标志位 - 加密密码时是否完整拼接了服务器返回的所有随机种子
- 插件名称的字节长度是否与
mysql_native_password的实际长度匹配
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

