You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:00:48