天天看點

SQLServer 中的身份驗證及登入問題

SQLServer 中的身份驗證及登入問題

by:授客 QQ:1033553122

身份驗證

SQL Server 支援兩種身份驗證模式,即Windows 身份驗證模式和混合模式。

  • Windows 身份驗證是預設模式(通常稱為內建安全),因為此 SQL Server 安全模型與 Windows 緊密內建。 信任特定 Windows 使用者群組帳戶登入 SQL Server。 已經過身份驗證的 Windows 使用者不必提供附加的憑據。
  • 混合模式支援由 Windows 和 SQL Server 進行身份驗證。使用者名和密碼保留在 SQL Server 内。

安全說明

我們建議盡可能使用 Windows 身份驗證。 Windows 身份驗證使用一系列加密消息來驗證 SQL Server 中的使用者。 使用 SQL Server 登入時,将跨網絡傳遞 SQL Server 登入名和密碼,這樣會降低它們的安全性

使用 Windows 身份驗證時,使用者已登入到 Windows,無需另外登入到 SQL Server。下面的 SqlConnection.ConnectionString 可指定 Windows 身份驗證,而無需使用者名或密碼。"Server=MSSQL1;Database=AdventureWorks;Integrated Security=true;

說明

登入名與資料庫使用者名不同。您必須通過單獨的操作将登入或Windows組映射到資料庫使用者或角色。然後向使用者或角色授予通路資料庫對象的權限

身份驗證方案

在下列情形中,Windows 身份驗證通常為最佳選擇:

  • 存在域控制器。
  • 應用程式和資料庫位于同一台計算機上。
  • 您正在使用 SQL Server Express 或 LocalDB 的執行個體。

SQL Server 登入常常在以下情況中使用:

  • 您有工作組。
  • 使用者從其他不受信任的域進行連接配接。
  • Internet 應用程式(例如 ASP.NET)。

說明

指定 Windows 身份驗證不會禁用 SQL Server 登入。 使用 ALTER LOGIN DISABLE Transact-SQL語句可禁用具有進階權限的 SQL Server 登入

登入類型

SQL Server 支援三種登入類型:

  • 本地 Windows 使用者帳戶或受信任的域帳戶。 SQL Server 依靠 Windows 來對 Windows 使用者帳戶進行身份驗證。
  • Windows 組。向 Windows 組授予通路權限會向作為該組的成員的所有 Windows 使用者登入授予通路權限。
  • SQL Server登入。 SQL Server 将使用者名和密碼的哈希都存儲在 master 資料庫中,使用内部身份驗證方法來驗證登入嘗試。

SQL Server 提供了從證書或非對稱密鑰建立的登入名,僅用于代碼簽名。 這些登入名不能用于連接配接到 SQL Server

混合模式身份驗證

如果您必須使用混合模式身份驗證,則必須建立 SQL Server 登入名,這些登入名存儲在 SQL Server中。 然後,您必須在運作時提供 SQL Server 使用者名和密碼。

安全說明

SQL Server 使用名為 sa(“system administrator”的縮寫)的 SQL Server 登入名進行安裝。 為 sa 登入配置設定一個強密碼,并且不要在應用程式中使用 sa 登入。 sa 登入名會映射到 sysadmin 固定伺服器角色,它對整個伺服器有不能撤銷的管理憑據。 如果攻擊者以系統管理者的身份擷取了通路權限,則可能造成的危害是無法預計的。 預設情況下,Windows BUILTIN\Administrators 組(本地管理者組)的所有成員均為 sysadmin 角色的成員,但可以從該角色中移除這些成員。

SQL Server 提供了在Windows Server 2003 或更高版本上運作時 SQL Server 登入的Windows 密碼政策機制。 密碼複雜性政策通過增加可能密碼的數量來阻止強力攻擊。 SQL Server 可将Windows Server 2003 中使用的相同複雜性和到期政策應用于 SQL Server 中使用的密碼。

連接配接來自使用者輸入的連接配接字元串會使您遭受連接配接字元串注入攻擊。 可使用 SqlConnectionStringBuilder 在運作時建立文法構成有效的連接配接字元串。 有關更多資訊,請參見連接配接字元串生成器

安裝說明

如果在安裝過程中選擇混合模式身份驗證,則必須為名為 sa 的内置SQL Server 系統管理者帳戶提供一個強密碼并确認該密碼。 sa 帳戶通過使用 SQL Server 身份驗證進行連接配接。

如果在安裝過程中選擇 Windows 身份驗證,則安裝程式會為 SQL Server 身份驗證建立 sa 帳戶,但會禁用該帳戶。

登入問題

如下,遇到18456登入錯誤問題(注:安裝完用sa使用者和密碼,以sqlserver身份驗證模式可以登入,就是不能以Windows身份驗證登入)

SQLServer 中的身份驗證及登入問題
SQLServer 中的身份驗證及登入問題

解決方法:

1.開始菜單中找到配置管理工具并打開

SQLServer 中的身份驗證及登入問題
SQLServer 中的身份驗證及登入問題

2.如圖,找到服務,右鍵服務,然後設定登入方式為“本賬戶”,賬戶名為計算機登入使用者名,密碼為計算機登入密碼,重新啟動服務

SQLServer 中的身份驗證及登入問題
SQLServer 中的身份驗證及登入問題

ok

問題:當再次切換到本地系統,重新開機服務,發現不能啟動了,咋辦?

解決方法:進入Windows控制台,找到對應服務,右鍵-屬性,設定登入為本地系統賬戶,重新開機服務,ok

SQLServer 中的身份驗證及登入問題
SQLServer 中的身份驗證及登入問題

作者:授客

微信/QQ:1033553122

全國軟體測試QQ交流群:7156436

Git位址:https://gitee.com/ishouke

友情提示:限于時間倉促,文中可能存在錯誤,歡迎指正、評論!

作者五行缺錢,如果覺得文章對您有幫助,請掃描下邊的二維碼打賞作者,金額随意,您的支援将是我繼續創作的源動力,打賞後如有任何疑問,請聯系我!!!

           微信打賞                       

支付寶打賞                  全國軟體測試交流QQ群  

SQLServer 中的身份驗證及登入問題
SQLServer 中的身份驗證及登入問題
SQLServer 中的身份驗證及登入問題

繼續閱讀