Laravel连接SQL Server报错:sa用户登录失败(密码不匹配)
解决Laravel连接SQL Server的sa登录失败问题
根据错误日志提示,核心问题是密码不匹配,结合你的配置,按以下步骤排查修复:
1. 修正.env文件中的密码格式
你的DB_PASSWORD被包裹在双引号中,Laravel读取时会将引号作为密码的一部分传入,导致密码不匹配。修改为:
DB_PASSWORD=password
注意:不要添加任何引号,直接写纯密码字符串。
2. 修正数据库端口配置
SQL Server默认端口为1433,你当前设置的DB_PORT=null是无效值,改为:
DB_PORT=1433
如果你的SQL Server使用自定义动态端口,需要在SQL Server配置管理器中确认实际端口号后填写。
3. 验证sa账户的有效性
- 确认SQL Server已启用混合身份验证模式(SQL Server和Windows身份验证),仅Windows身份验证会导致sa无法登录。
- 使用SQL Server Management Studio(SSMS)或
sqlcmd工具,用相同的sa账户和密码直接登录数据库,验证密码是否正确,以及sa账户是否被启用(未被锁定/禁用)。
4. 启用加密连接配置(可选但关键)
如果你的SQL Server要求加密连接,取消config/database.php中sqlsrv配置的相关注释:
'sqlsrv' => [ // ... 其他配置 'encrypt' => env('DB_ENCRYPT', 'yes'), 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'true'), ],
同时在.env中添加对应变量(如果需要自定义):
DB_ENCRYPT=yes DB_TRUST_SERVER_CERTIFICATE=true
5. 清除配置缓存
修改配置后,执行以下命令清除Laravel配置缓存,确保新配置生效:
php artisan config:clear php artisan cache:clear
内容的提问来源于stack exchange,提问作者Ulvy Romy
相关产品推荐
相关产品推荐

