PHP连接SQL Server报错:用户'administrator'登录失败
解决PHP连接SQL Server时的18456登录失败错误
针对你遇到的SQL Server登录失败(错误码18456)问题,结合你已完成的配置,按以下步骤排查:
确认SQL Server认证账号的有效性
用Windows身份登录SSMS,展开「安全性」→「登录名」,找到SQL Server类型的administrator账号:- 若不存在,右键「登录名」→「新建登录名」,选择「SQL Server身份验证」,设置用户名和密码,取消勾选「强制实施密码策略」(测试阶段可选),并在「用户映射」中关联
gm数据库,赋予相应权限。 - 若已存在,右键账号→「属性」,切换到「状态」页,确保「登录」选项设为「启用」。
- 若不存在,右键「登录名」→「新建登录名」,选择「SQL Server身份验证」,设置用户名和密码,取消勾选「强制实施密码策略」(测试阶段可选),并在「用户映射」中关联
验证账号密码的正确性
直接用administrator账号和密码tes通过SSMS的「SQL Server身份验证」登录。如果这里失败,说明密码错误或账号被锁定,先修正这个问题。检查TCP/IP端口配置
打开SQL Server配置管理器:- 展开「SQL Server网络配置」→「MSSQLSERVER的协议」,右键「TCP/IP」→「属性」。
- 在「IP地址」页,找到「IPAll」节点,确认「TCP端口」为1433(默认),且所有启用的IP地址的「TCP端口」一致。
- 确保「TCP/IP」协议的「已启用」设为「是」,修改后重启SQL Server服务。
修正连接字符串的服务器地址
如果SQL Server使用非默认端口,连接时必须指定端口,例如:$serverName = "192.168.0.6,1433";同时确认Web服务器能ping通
192.168.0.6,网络无阻断。检查防火墙规则
在SQL Server所在机器(192.168.0.6)的Windows防火墙中,添加入站规则,允许1433端口(或自定义端口)的TCP流量;同时确保Web服务器的防火墙允许出站访问该端口。尝试Windows身份认证(备选方案)
若Web服务器和SQL Server在同一环境,可改用Windows身份认证简化配置:$serverName = "192.168.0.6"; $connectionInfo = array("Database"=>"gm"); $conn = sqlsrv_connect($serverName, $connectionInfo);此时需要给Apache的运行账号(如
LOCAL SERVICE或指定的域账号)在SQL Server中添加登录权限,并赋予gm数据库的访问权限。
内容的提问来源于stack exchange,提问作者ITG
相关产品推荐
相关产品推荐

