SQL Server 身份驗證模式
當 SQL Server 2000 在 Windows NT 或
Windows 2000 上運行時,sysadmin 固定
服務器角色成員可以指定下面兩種身份驗證模式之一:
Windows 身份驗證模式 只進行 Windows 身份驗證。用戶不能指定 SQL Server 2000 登錄 ID。這是 SQL Server 2000 的默認身份驗證模式。不能為在 Windows 98 上運行的 SQL Server 實例指定 Windows 身份驗證模式,因為此
操作系統不支持 Windows 身份驗證。
當用戶通過 Windows NT 4.0 或 Windows 2000 用戶帳戶進行連接時,SQL Server 通過回叫 Windows NT 4.0 或 Windows 2000 以獲得
信息,重新驗證帳戶名和密碼。
SQL Server 通過使用網絡用戶的安全特性控制登錄訪問,以實現與 Windows NT 4.0 或 Windows 2000 的登錄安全集成。用戶的
網絡安全特性在網絡登錄時建立,並通過 Windows 域控制器進行驗證。當網絡用戶嘗試連接時,SQL Server 使用基於 Windows 的功能確定經過驗證的網絡用戶名。SQL Server 於是驗證此人是否是如其所說的那個人,然後只基於網絡用戶名允許或拒絕登錄訪問,而不要求單獨的登錄名和密碼。
登錄安全集成在 SQL Server 中任何受支持的.Html" target="_blank">
網絡協議上運行。
說明 如果用戶試圖通過提供空白登錄名稱連接到 SQL Server 的實例,SQL Server 將使用 Windows 身份驗證。此外,如果用戶試圖使用特定的登錄連接到配置為 Windows 身份驗證模式的 SQL Server 實例,則將忽略該登錄並使用 Windows 身份驗證。
與 SQL Server 身份驗證相比,Windows 身份驗證有某些優點,主要是由於它與 Windows NT 4.0 和 Windows 2000 安全
系統的集成。Windows NT 4.0 和 Windows 2000 安全系統提供更多的功能,如安全驗證和密碼
加密、審核、密碼過期、最短密碼長度,以及在多次登錄請求無效後鎖定帳戶。
由於 Windows NT 4.0 和 Windows 2000 用戶和組只由 Windows NT 4.0 或 Windows 2000 維護,因此當用戶進行連接時,SQL Server 將讀取有關該用戶在組中的成員資格信息。如果對已連接用戶的可訪問權限進行更改,則當用戶下次連接到 SQL Server 實例或登錄到 Windows NT 4.0 或 Windows 2000 時(取決於更改的類型),這些更改會生效。
混合模式 如果用戶在登錄時提供了 SQL Server 2000 登錄 ID,則系統將使用 SQL Server 身份驗證對其進行驗證。如果沒有提供 SQL Server 2000 登錄 ID 或請求 Windows 身份驗證,則使用 Windows 身份驗證對其進行身份驗證。
當用戶用指定的登錄名稱和密碼從非信任連接進行連接時,SQL Server 通過檢查是否已設置 SQL Server 登錄帳戶,以及指定的密碼是否與以前記錄的密碼匹配,自己進行身份驗證。如果 SQL Server 未設置登錄帳戶,則身份驗證將失敗,而且用戶收到錯誤信息。
提供 SQL Server 身份驗證是為了向後兼容性,因為為 SQL Server 7.0 版或更早的版本編寫的應用程序可能要求使用 SQL Server 登錄和密碼。另外,當 SQL Server 實例在 Windows 98 上運行時,必須使用 SQL Server 身份驗證,因為在 Windows 98 上不支持 Windows 身份驗證模式。
因此,SQL Server 在 Windows 98 上運行時使用混合模式(但只支持 SQL Server 身份驗證)。
盡管建議使用 Windows 身份驗證,但對於 Windows NT 4.0 和 Windows 2000 客戶端以外的其它客戶端連接,可能需要使用 SQL Server 身份驗證。
說明 當使用命名管道連接到在 Windows NT 4.0 或 Windows 2000 上運行的 SQL Server 實例時,用戶必須有連接到 Windows NT 命名管道 IPC \\\IPC$ 的權限。如果用戶沒有連接權限,則不能使用命名管道連接到 SQL Server 實例,除非計算機上的 Windows NT 4.0 或 Windows 2000 guest 帳戶已啟用(默認情況下禁用),或者給用戶帳戶授予"從網絡訪問該計算機"的權限。
設置 SQL Server 2000 身份驗證模式
SQL Server 2000 身份驗證模式可以在安裝過程中指定或使用 SQL Server 企業管理器指定,如下圖。
也可以通過
修改注冊表的方式來改變,如下圖,它保存在
HKEY_LOCAL_MacHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer 節的 LoginMode 中。
LoginMode的鍵值:1 表示Windows 身份驗證模式,2 表示混合模式。
注:改變模式後,必須重新
啟動 SQL Server 2000 才會生效。
SQL Server 2000 聯機叢書: 若要連接到 Microsoft© SQL Server™ 2000 實例,只需給應用程序提供下面中的兩條信息:
運行 SQL Server 實例的計算機所在的網絡名稱。
實例名(可選,只有在連接到命名實例時才需要)。
登錄標識符 (ID)。
登錄 ID 是帳戶標識符,用來控制對任何 SQL Server 2000 系統的訪問權限。SQL Server 2000 只有在首先驗證了指定的登錄 ID 有效後,才完成連接。這種登錄驗證稱為身份驗證。
在登錄屬性中,有一個是默認
數據庫。當一個登錄連接到 SQL Server 時,這個默認數據庫就變成該連接的當前數據庫,除非該連接請求指定另一個數據庫作為當前數據庫。
登錄 ID 僅能使您連接到 SQL Server 實例。特定數據庫內的權限由用戶帳戶控制。
數據庫管理員將您的登錄帳戶映射到您有權訪問的任何數據庫中的用戶帳戶。
Windows 身份驗證 SQL Server 2000 sysadmin 固定服務器角色成員必須首先向 SQL Server 2000 指定所有允許連接到 SQL Server 2000 的 Microsoft Windows NT® 或 Microsoft Windows® 2000 帳戶或組。當使用 Windows 身份驗證時,在連接到 SQL Server 2000 時不必指定登錄 ID 或密碼。用戶對 SQL Server 2000 的訪問權限由 Windows NT 或 Windows 2000 帳戶或組控制,當登錄到客戶端上的 Windows 操作系統時需接受身份驗證。
當連接到 SQL Server 2000 時,SQL Server 2000 客戶端軟件向 SQL Server 2000 請求 Windows 信任連接。直到客戶端使用有效的 Windows 帳戶return false;" onmousemove="kwM(1);" id="key1" onmouseover="kwE(event,1, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" onclick="return kwC();" onmouSEOut="kwL(event, this);" target="_blank">成功登錄後,Windows 才打開信任連接。信任連接的屬性包括打開連接的客戶端的 Windows NT 和 Windows 2000 組及用戶帳戶。SQL Server 2000 從信任連接屬性中得到用戶的帳戶信息,並將它們與定義為有效 SQL Server 2000 登錄的 Windows 帳戶相匹配。如果 SQL Server 2000 找到匹配的項,則接受這個連接。當使用 Windows 2000 身份驗證連接到 SQL Server 2000 時,用戶標識即是 Windows NT 或 Windows 2000 組或用戶帳戶。
Microsoft Windows Me 和 Windows 98 操作系統不支持服務器端的信任連接 API。SQL Server 在 Windows Me 或 Windows 98 上運行時不支持 Windows 身份驗證。用戶在連接時必須提供 SQL Server 登錄帳戶。當 SQL Server 在 Windows NT 或 Windows 2000 上運行時,Windows Me、Windows 98 和 Windows 95 客戶端可以使用 Windows 2000 身份驗證與其連接。
SQL Server 身份驗證 sysadmin 固定服務器角色成員首先向 SQL Server 2000 指定所有有效的 SQL Server 2000 登錄帳戶和密碼。
這些登錄帳戶和密碼與用戶的 Microsoft Windows 帳戶或網絡帳戶無關。當連接到 SQL Server 2000 時,用戶必須提供 SQL Server 2000 登錄帳戶和密碼。系統將通過用戶的 SQL Server 2000 登錄帳戶在 SQL Server 2000 中標識用戶。
由此可以看出,SQL Server 2000 安全控制是由登錄>>用戶>>權限來得到控制的。因此要連接 SQL Server 2000,首先要經過身份驗證,要通過身份驗證,就必須擁有登錄 ID。
一、登錄 ID 的獲取 SQL Server 2000 使用兩類身份驗證:Windows 身份驗證和 SQL Server 身份驗證(注:Microsoft Windows Me 和 Windows 98 操作系統不支持服務器端的信任連接 API,也就是說安裝在 Microsoft Windows Me 和 Windows 98 操作系統上的 SQL Server 2000 不支持 Windows 身份驗證)。
為 Windows 身份驗證的登錄 ID 的獲取 對於有域的網絡,在域用戶管理器中添加域用戶,設為:UserSQL
對於無域的網絡,在用戶和組中添加用戶,設為:UserSQL
向本地計算機中添加 Windows 用戶(以 Windws XP 為例)
下圖舉例說明在
Windows XP 添加用戶,打開 Windows 資源管理器,右鍵單擊 [我的電腦] 選擇 [管理] 就打開了 [計算機管理],在 [計算機管理] 中,展開 [本地用戶和級] 右鍵單擊 [用戶] 選擇 [新用戶],這時打開 [新用戶] 窗口,輸入用戶名為 UserSQL,描述為 SQL Server 登錄 ID(可選,方便以後管理),輸入密碼,去掉“用戶下次登錄時必須更改密碼”(為了講解簡單點),勾選“用戶不能更改密碼”和“密碼永不過期”,然後點擊 [創建] 按鈕,這時就為該計算機創建了一個名為 UserSQL 的用戶。
到此該用戶還不能用來連接 SQL Server 2000 數據庫,還必須在 SQL Server 2000 中創建“登錄”與剛建的用戶相對應。