Ubuntu 18.04下EF Core数据库脚手架Kerberos认证失败解决方案咨询
解决Ubuntu下EF Core Scaffold时Kerberos认证错误的方案
我之前在Ubuntu环境下基于EF Core做数据库优先开发时,遇到过和你完全一致的Kerberos认证错误,下面是我验证有效的解决步骤:
错误原因分析
你使用的连接字符串里Integrated Security=true是Windows身份验证的参数,它依赖Windows系统的SSPI安全机制。但在Ubuntu等Linux系统中并没有这个机制,EF Core会尝试用Kerberos认证来替代,但你的本地环境没有配置Kerberos,就触发了这个报错。
解决方案步骤
1. 修改连接字符串为SQL Server身份验证
把连接字符串中的Integrated Security=true替换为SQL Server的账户密码验证(用你之前登录sqlcmd的SA账户即可):
"Server=localhost;Database=WebAppDB;User ID=SA;Password='MyPasswd';"
2. 重新执行Scaffold命令
用修改后的连接字符串重新运行EF Core命令:
dotnet ef dbcontext scaffold "Server=localhost;Database=WebAppDB;User ID=SA;Password='MyPasswd';" Microsoft.EntityFrameworkCore.SqlServer -c RsvpContext
可选:更安全的密码传递方式(避免明文)
如果不想在命令行中暴露密码,可以通过环境变量传递连接字符串:
# 设置环境变量 export SQLCONNSTR_WebAppDB="Server=localhost;Database=WebAppDB;User ID=SA;Password='MyPasswd';" # 使用环境变量名称执行命令 dotnet ef dbcontext scaffold Name=WebAppDB Microsoft.EntityFrameworkCore.SqlServer -c RsvpContext
额外验证(如果遇到其他问题)
确认你的MSSQL Server实例已经启用了SQL身份验证:
- 用sqlcmd登录后,执行以下命令检查:
SELECT name, type_desc FROM sys.server_principals WHERE name = 'SA';
如果返回结果中type_desc为SQL_LOGIN,说明SQL身份验证已经启用,无需额外配置。
内容的提问来源于stack exchange,提问作者paulokunev
相关产品推荐
相关产品推荐

