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

如何在Laravel中使用域认证连接SQL Server?Navicat可正常连接

Laravel连接SQL Server域认证失败问题解决

问题说明

我可通过Navicat使用域认证连接SQL Server,但Laravel中无法完成连接。

当前数据库配置

[
    "driver" => "sqlsrv",
    "url" => "ad.demo.com",
    "host" => "10.xx.xx.xx",
    "port" => "1550",
    "database" => "Database",
    "username" => "user1",
    "password" => "****",
    "charset" => "utf8",
    "prefix" => "",
    "prefix_indexes" => true,
]

报错信息

Illuminate/Database/QueryException 异常:SQLSTATE[28000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server] 用户 'user1' 登录失败。(SQL: select count(*) as aggregate from [USERS])


解决步骤

1. 调整Laravel配置启用域认证

Laravel默认使用SQL Server身份验证,要切换到域认证(Windows身份验证),需修改配置:

  • 删除username和password字段
  • 添加trusted_connection并设为true

修改后的配置示例:

[
    "driver" => "sqlsrv",
    "host" => "10.xx.xx.xx",
    "port" => "1550",
    "database" => "Database",
    "charset" => "utf8",
    "prefix" => "",
    "prefix_indexes" => true,
    "trusted_connection" => true,
]

2. 确认运行环境的用户权限

  • Windows服务器(如IIS):确保应用池使用的域账号拥有SQL Server的访问权限,和Navicat使用的账号权限一致。
  • Linux服务器:需通过Kerberos配置域认证:
    • 安装krb5相关依赖包
    • 配置/etc/krb5.conf指向域控制器
    • 获取并维护有效的Kerberos服务票据,确保PHP进程能调用

3. 验证ODBC驱动兼容性

确认服务器上安装的ODBC Driver 17 for SQL Server支持域认证,可通过创建ODBC数据源测试,确保能通过域身份成功连接SQL Server。

4. 检查SQL Server设置

确认SQL Server实例开启了Windows身份验证模式,且目标域用户user1拥有访问Database数据库的权限(包括查询USERS表的权限)。


内容的提问来源于stack exchange,提问作者local.clk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 15:02:18