概要本文分步討論了可用於更改 SQL Server
sa(系統管理員)密碼的步驟。
可以將 Microsoft SQL Server Desktop Engine (MSDE) 2000 版本或更早版本配置為在混合身分識別驗證模式下運行。sa 帳戶在安裝過程中建立,並且 sa 具有在 SQL Server 環境中的完全許可權。預設情況下,sa 密碼為空白 (NULL),除非您在運行 MSDE 安裝程式時更改了該密碼。為符合安全最佳方案的要求,必須在第一次使用時將 sa 密碼更改為強密碼。
返回頁首
如何驗證 SA 密碼是否為空白
| 1. |
在正在串連到的 MSDE 執行個體的宿主要電腦中,開啟命令提示字元視窗。 |
| 2. |
在命令提示字元處鍵入以下命令,然後按 Enter 鍵: osql -U sa 這樣可以通過 sa 帳戶串連到 MSDE 的本地預設執行個體。要串連到您的電腦上安裝的具名執行個體,請鍵入: osql -U sa -S servername/instancename 隨即將出現以下提示: Password: |
| 3. |
再次按 Enter 鍵。此操作將為 sa 傳遞一個 NULL(空)密碼。 如果按 Enter 鍵後出現以下提示,則您對 sa 帳戶沒有密碼: 1> 為了符合安全方案的要求,Microsoft 建議您建立非空的強密碼。 但是,如果收到以下錯誤資訊,則表示您輸入的密碼不正確。此錯誤資訊表示已為 sa 帳戶建立了密碼: "Login Failed for user 'sa'." 以下錯誤資訊表示運行 SQL Server 的電腦設定為只限 Windows 身分識別驗證: Login failed for user 'sa'.Reason:Not associated with a trusted SQL Server connection.在 Windows 身分識別驗證模式下無法驗證 sa 密碼。但可以建立 sa 密碼,以便 sa 帳戶在以後身分識別驗證模式更改為混合模式時仍然是安全的。 如果您收到以下錯誤資訊,則表示 SQL Server 可能未運行,或者您可能為安裝的 SQL Server 的具名執行個體提供了錯誤名稱: [Shared Memory]SQL Server does not exist or access denied. [Shared Memory]ConnectionOpen (Connect()). |
返回頁首
如何更改 SA 密碼
| 1. |
在正在串連到的 MSDE 執行個體的宿主要電腦中,開啟命令提示字元視窗。 |
| 2. |
鍵入下面的命令,然後按 Enter 鍵: osql -U sa 在 Password:提示符下,按 Enter 鍵(如果密碼為空白)或鍵入當前密碼。這樣可以使用 sa 帳戶串連到 MSDE 的本地預設執行個體。要使用 Windows 身分識別驗證進行串連,請鍵入此命令: use osql -E |
| 3. |
在各個單獨的行內鍵入下列命令,然後按 Enter 鍵:
sp_password @old = null, @new = 'complexpwd', @loginame ='sa' go 注意:確保將“complexpwd”替換為新的強密碼。強密碼包括字母數字和特殊字元以及大小寫字元的組合。
您將收到以下提示資訊,表示已成功更改密碼: Password changed. |
返回頁首
如何確定或更改身分識別驗證模式
重要說明:本文包含有關修改註冊表的資訊。修改註冊表之前,一定要備份註冊表,並且一定要知道在發生問題時如何還原註冊表。有關如何備份、還原和編輯註冊表的資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
256986 Microsoft Windows 註冊表說明
警告:登錄編輯程式使用不當可導致嚴重問題,可能需要重新安裝作業系統。Microsoft 不能保證您可以解決因登錄編輯程式使用不當而導致的問題。使用登錄編輯程式需要您自擔風險。
如果不能確定如何驗證 MSDE 安裝的身分識別驗證模式,可以查看相應的登錄機碼。預設情況下,對於 Windows 身分識別驗證,Windows LoginMode 註冊表子項的值設定為 1。如果啟用了混合模式身分識別驗證,則此值為 2。
| • |
LoginMode 子項的位置取決於您是將 MSDE 作為預設 MSDE 執行個體安裝還是作為具名執行個體安裝。如果 MSDE 是作為預設執行個體安裝的,則 LoginMode 子項位於以下註冊表子項中: HKLM/Software/Microsoft/MSSqlserver/MSSqlServer/LoginMode |
| • |
如果 MSDE 是作為具名執行個體安裝的,則 LoginMode 子項位於以下註冊表子項中: HKLM/Software/Microsoft/Microsoft SQL Server/%InstanceName%/MSSQLServer/LoginMode |
注意:切換身分識別驗證模式之前,必須設定 sa 密碼,以免暴露潛在的安全性漏洞。
有關其他資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
274773 FIX:If You Change Windows Security to Windows/SQL Security the SA Password is Blank
要從混合模式切換到整合 (Windows) 身分識別驗證模式,請按以下步驟操作:
| 1. |
要停止 MSSQLSERVER 以及所有其他相關服務(如 SQLSERVERAgent),請在“控制台”中開啟服務程式。 |
| 2. |
開啟登錄編輯程式。要開啟登錄編輯程式,請依次單擊開始和運行,然後鍵入:“regedt32”(不包括引號) 單擊確定。 |
| 3. |
找到以下兩個子項之一(取決於 MSDE 是作為預設 MSDE 執行個體安裝的還是作為具名執行個體安裝的): HKEY_LOCAL_MACHINE/Software/Microsoft/MSSqlserver/MSSqlServer - 或者 - HKEY_LOCAL_MACHINE/Software/Microsoft/Microsoft SQL Server/<Instance Name>/MSSQLServer/ |
| 4. |
在右窗格中,雙擊 LoginMode 子項。 |
| 5. |
在 DWORD 編輯器對話方塊中,將此子項的值設定為 1。確保選擇了 Hex 選項,然後單擊確定。 |
| 6. |
重新啟動 MSSQLSERVER 和 SQLSERVERAgent 服務以使更改生效。 |
返回頁首
SQL Server 安裝的最佳安全方案
下面的每一項都會增強系統的安全性,並且它們都屬於任何 SQL Server 安裝的標準安全“最佳方案”。
| • |
使用非空密碼保護 sa 登入帳戶。有些蠕蟲程式僅當您未對 sa 登入帳戶採取安全措施時才會發作。 有關其他資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章: 313418 PRB:使用空 (NULL) SA 密碼的非安全的 SQL Server 會給蠕蟲程式以可乘之機 因此,要確保內建 sa 帳戶具有強密碼,必須按照 SQL Server 聯機叢書的“系統管理員 (SA) 登入”主題中的建議進行操作(即使您從未直接使用 sa 帳戶)。 |
| • |
阻塞位於 網際網路閘道的連接埠 1433,然後分配 SQL Server 偵聽備用連接埠。 |
| • |
如果在 網際網路閘道上必須使用連接埠 1433,請啟用進出過濾功能以防止誤用連接埠。 |
| • |
在 Microsoft Windows NT 帳戶(而非本地系統帳戶)下運行 SQLServer 服務和 SQL Server Agent。 |
| • |
啟用 Microsoft Windows NT 身分識別驗證,然後啟用對成功和失敗登入的審核。然後,停止並重新啟動 MSSQLServer 服務。配置您的用戶端使用 Windows NT 身分識別驗證。 |
返回頁首 參考有關空 sa 密碼如何被利用的其他資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
313418 PRB:使用空 (NULL) SA 密碼的非安全的 SQL Server 會給蠕蟲程式以可乘之機
有關在身分識別驗證模式更改時 SQL Server 2000 Service Pack 1 後續版本行為更改的其他資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
274773 FIX:If You Change Windows Security to Windows/SQL Security the SA Password is Blank