如何让IIS使用应用池身份而非NT Authority\IUSR连接SQL Server
Windows Server 2019 IIS+PHP连接SQL Server登录失败问题解决方案
问题现象
在Windows Server 2019服务器上部署IIS、PHP 8、SQL Server驱动以及SQL Server 2019 Express,创建测试PHP应用、对应应用程序池并配置测试数据库后,使用sqlsrv_connect连接数据库时抛出报错:
用户'NT AUTHORITY\IUSR'登录失败
已尝试的配置操作
- 参照Windows Server 2012的配置逻辑,将IIS匿名身份验证设置为使用应用池身份
- 在SQL Server中为对应应用池身份添加了测试数据库的访问权限
上述配置始终不生效,曾怀疑Windows Server 2019与Server 2012的应用池身份处理逻辑存在差异
根因定位
测试应用目录放在默认站点的wwwroot路径下(路径c:\inetpub\wwwroot\test),通过www.domain.com/test访问时,应用实际运行在wwwroot对应的默认站点应用池下,该应用池默认使用IUSR身份运行,而非单独创建的测试应用池。
解决方案
将测试应用配置为独立站点,绑定独立域名test.domain.com后访问,应用会使用单独分配的应用池身份运行,数据库连接报错即可解决。
内容的提问来源于stack exchange,提问作者DHoll
相关产品推荐
相关产品推荐

