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

PHP连接本地SQL Server失败,错误18456寻求解决方案

解决方案:SQL Server Windows身份验证登录失败(错误18456)

错误代码18456表明登录验证失败,结合你使用Windows域账号IIIIN\fsadiq的场景,问题核心是连接参数配置不符合Windows身份验证规则,以下是具体解决步骤:

1. 修正PHP连接脚本

你当前脚本使用的Uid和PWD参数是SQL Server身份验证的配置方式,Windows身份验证无需传入账号密码,而是依赖运行PHP的进程身份完成验证,修改连接参数如下:

方式一:使用Authentication常量

<?php
$serverName = "171.11.111.111";
$database = "ISS_CFW";

// Windows身份验证参数
$connection = [
    "Database" => $database,
    "Authentication" => SQLSRV_AUTH_WINDOWS
];

$conn = sqlsrv_connect($serverName, $connection);
if (!$conn) {
    die(print_r(sqlsrv_errors(), true));
} else {
    echo 'connection established';
}
?>

方式二:使用Trusted_Connection参数

<?php
$serverName = "171.11.111.111";
$database = "ISS_CFW";

// Windows身份验证参数
$connection = [
    "Database" => $database,
    "Trusted_Connection" => "yes"
];

$conn = sqlsrv_connect($serverName, $connection);
if (!$conn) {
    die(print_r(sqlsrv_errors(), true));
} else {
    echo 'connection established';
}
?>

2. 确认SQL Server身份验证模式

确保SQL Server已启用Windows身份验证:

  • 打开SQL Server Management Studio(SSMS),连接目标实例
  • 右键实例 → 属性 → 安全性
  • 确认服务器身份验证为SQL Server和Windows身份验证模式(仅启用SQL Server身份验证时,Windows账号无法登录)

3. 配置账号的SQL Server登录权限

需要在SQL Server中为IIIIN\fsadiq创建登录并赋予数据库权限:

  1. 在SSMS中展开实例 → 安全性 → 登录名
  2. 右键登录名 → 新建登录名
  3. 选择“Windows身份验证”,输入登录名IIIIN\fsadiq
  4. 切换到“用户映射”,勾选ISS_CFW数据库,按需赋予角色(如db_datareader、db_datawriter)

4. 确保运行PHP的进程身份正确

  • CLI运行PHP:当前登录系统的用户必须是IIIIN\fsadiq
  • Web服务器(如IIS):修改应用池身份为IIIIN\fsadiq(IIS管理器 → 应用池 → 目标池右键 → 高级设置 → 进程模型 → 标识)

内容的提问来源于stack exchange,提问作者Farouk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:33:40