使用MySQL Connector 6.9.11连接Linux数据库时SSPI调用失败求助
解决MySQL Connector 6.9.11连接Linux MySQL时的SSPI失败问题
核心原因
该错误是因为MySQL Connector尝试使用Windows SSPI(安全支持提供程序接口)进行身份验证,但Linux上的MySQL不支持Windows身份验证机制,或是Connector在未明确指定认证方式时自动触发了SSPI路径。
解决方案
1. 连接字符串强制指定认证方式
在连接字符串中添加AuthenticationMethod=mysql_native_password;,强制Connector使用MySQL原生密码认证,避免触发SSPI逻辑。修改后的代码:
connStr = String.Format("server={0};user id={1}; password={2};AuthenticationMethod=mysql_native_password;", "www.mysite.com", UN, PW) Conn = New MySqlConnection(connStr) Conn.Open()
2. 验证MySQL用户的认证插件
登录Linux服务器的MySQL,检查目标用户使用的认证插件是否为mysql_native_password:
SELECT user, plugin FROM mysql.user WHERE user='你的用户名';
如果插件不是mysql_native_password,执行以下命令修改:
ALTER USER '你的用户名'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;
(注意将%替换为实际允许的客户端IP范围,如192.168.1.%,若允许所有IP则保留%)
3. 升级MySQL Connector版本
Connector 6.9.11是较老版本,存在与MySQL 5.7系列的兼容性问题。建议升级到Connector/NET 6.10.12(该版本兼容.NET 4.0和VS2010),新版本修复了多个认证相关bug。
4. 排查本地Windows系统问题
- 重启本地开发机器,重置LSA(本地安全机构)服务状态
- 检查Windows服务中
Local Security Authority (LsaSrv)是否正常运行,未运行则手动启动 - 确保本地系统时间与Linux服务器时间同步,时间偏差过大可能导致认证校验失败
内容的提问来源于stack exchange,提问作者Greatchap
相关产品推荐
相关产品推荐

