萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

SQL Server 密碼策略導致 sa 密碼修改失敗 (15116) 解決:複雜度要求、sp_password、ALTER LOGIN

啟用 sa 帳號並修改密碼時遇到 錯誤 15116:密碼驗證失敗,密碼太短不符合 Windows 策略。原因:SQL Server 繼承 Windows/網域密碼策略 (長度、複雜度、歷史)。

現象重現

EXEC sp_password 'sa', null, 'sa';      -- 舊語法,參數順序: old, new, login
ALTER LOGIN sa ENABLE;
-- Msg 15116, Level 16, State 1
-- Password validation failed. The password does not meet Windows policy requirements.

解決方案:使用符合策略的強密碼

-- 正確語法: sp_password @old, @new, @loginame
EXEC sp_password 'sa', 'Uiop_098Mn', 'sa';  -- 含大小寫、數字、符號、長度≥8
ALTER LOGIN sa ENABLE;

或現代語法 (SQL 2005+):

ALTER LOGIN sa WITH PASSWORD = 'Uiop_098Mn' UNLOCK;

密碼策略來源與檢視

  • 本地安全策略:secpol.msc → 帳戶原則 → 密碼原則
  • 網域策略 (GPO) 覆蓋本地策略,gpupdate /force 同步
  • SQL Server 端檢視:SELECT * FROM sys.sql_logins WHERE name = 'sa'; → is_policy_checked

關閉密碼策略檢查 (不推薦生產環境)

-- 單一登入關閉
ALTER LOGIN sa WITH CHECK_POLICY = OFF;

-- 新建登入時關閉
CREATE LOGIN app_user WITH PASSWORD = 'simple', CHECK_POLICY = OFF;

風險:違反合規 (PCI-DSS、等保)、易遭暴力破解、**僅限開發/測試環境**。

最佳實踐

  1. **生產環境嚴格遵守策略**:密碼 ≥ 12 字元、四類字元、定期輪換、密碼保險箱管理
  2. **禁用 sa / 重命名 sa** → 建立專用 DBA/應用帳號,最小權限
  3. **啟用強制加密連線** (Force Encryption) 防憑證嗅探
  4. **稽核登入失敗**:Login Auditing = Failed logins 或 Extended Events

Windows 密碼策略關鍵設定對照

策略預設值建議值
Enforce password history2424
Maximum password age42 天90 天
Minimum password age1 天1 天
Minimum password length712+
Password must meet complexityEnabledEnabled
Store passwords using reversible encryptionDisabledDisabled
copyright © 萬盛學電腦網 all rights reserved