當前位置:編程學習大全網 - 遊戲軟體 - 如何在sql server中新建數據庫用戶賬戶

如何在sql server中新建數據庫用戶賬戶

2.2 登錄名

2.2.1 登錄名

登錄名是服務器級別的壹個實體,用於登錄到 SQL Server 實例。登錄名的元數據保存在 master 數據庫的 syslogins 表。

登錄名包括以下2類:

(1) Windows 登錄

SQL Server 將為 Windows 帳戶創建壹個 SID。客戶端在登錄 SQL Server 時使用的是 SQL Server 的登錄名,而不是 Windows 帳戶。當使用集成身份驗證時,SQL Server 會自動查詢當前實例中是否存在對應的登錄名,驗證通過後才完成連接。

(2) SQL 登錄

如果 SQL Server 實例處於混合身份驗證模式,那麽可以創建當前實例自有的登錄名。

2.2.2 新建 Windows 登錄

在 SSMS 中展開“安全性”、“登錄名”。在右鍵菜單中選擇“新建登錄名”。

默認的新建登錄名是基於 Windows 身份驗證。單擊“登錄名”文本框右側的“搜索”按鈕,搜索壹個用戶或組。

在“選擇用戶或組”對話窗口,默認的“對象類型”只有“內置安全主體”和“用戶”兩類。可以單擊“對象類型”按鈕並需要添加“組”類型。

可以單擊“位置”按鈕,從而在本地計算機或域(以及受信任的域)中進行搜索 Windows 對象。

在“輸入要選擇的對象名稱”文本框中輸入壹個 Windows 對象名稱。建議單擊“檢查名稱”按鈕,檢查對象名稱是否存在。如果同時有多個對象的名稱都匹配了輸入的字符,則需要從彈出的選擇窗口中選擇其中的壹個對象。

T-SQL 語句示例如下:

USE [master]

GO

CREATE LOGIN [SQLSVR2014\LocalSqlUser] FROM WINDOWS WITH DEFAULT_DATABASE=[master]

GO

最佳實踐:

對於域帳戶,建議從域級別使用 AGDLP 策略可簡化帳戶管理。即使用 Windows 身份驗證,在域級別創建 Windows 組(全局組、域本地組),然後在 SQL Server 上為整個組創建登錄名。

2.2.3 新建 SQL 登錄

如果新建的登錄名是基本 SQL Server 身份驗證,需要為新的登錄名設置新的密碼,同時為其指定密碼策略。

密碼策略有3個選項:

(1)強制實施密碼策略

對 SQL Server 登錄名強制實施計算機的 Windows 密碼策略。這包括密碼長度和密碼復雜性。此功能僅在 Windows Server 2003 和更高版本中提供。在數據庫實例所在的計算機打開“管理工具”中的“本地安全策略”,依次展開“安全設置”“帳戶策略”,然後單擊“密碼策略”,密碼策略將在結果窗格中所示。

如果取消了“強制實施密碼策略”,則“強制密碼過期”和“用戶在下次登錄時必須更改密碼”選項都不可用。

(2)強制密碼過期

對 SQL Server 登錄名強制實施計算機的密碼最長使用期限策略。

(3)用戶在下次登錄時必須更改密碼

要求用戶在下次連接時更改密碼。更改密碼的功能由 SSMS 提供。如果啟用了“用戶在下次登錄時必須更改密碼”選項,則第三方軟件開發人員應提供此功能。

新建 SQL 登錄名的 T-SQL 語句示例如下:

USE [master]

GO

CREATE LOGIN [SqlUser1] WITH PASSWORD=N'Password123' MUST_CHANGE, DEFAULT_DATABASE=[master], CHECK_EXPIRATION=ON, CHECK_POLICY=ON

GO

2.2.4 修改密碼

對於 SQL 登錄名,可以在 SSMS 中重置密碼。

T-SQL 語句示例如下:

USE [master]

GO

Alter Login [sa] with password='newpassword'

GO

如果指定舊密碼,T-SQL 語句示例如下:

USE [master]

GO

Alter Login [sa] with password='newpassword' old_password='oldpassword'

GO

可以使用 HASHED 參數加密密碼字符。

ALTER LOGIN [SqlUser1] WITH

PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;

GO

提示:

不推薦執行 sp_password 存儲過程修改密碼。

2.2.5 修改登錄名的狀態

狀態包括了兩類設置:是否允許連接到數據庫引擎;是否已啟用登錄。

如果在安裝過程中選擇 Windows 身份驗證,則安裝程序仍然會為 SQL Server 身份驗證創建 sa 帳戶,但會禁用該帳戶。如果稍後更改為混合模式身份驗證,則 sa 登錄名仍處於禁用狀態。如果需要使用 sa 帳戶,則必須啟用 sa 登錄名並分配壹個新密碼。

USE [master]

GO

ALTER LOGIN [sa] WITH PASSWORD = 'Password123'

GO

ALTER LOGIN [sa] ENABLE

GO

提示:

由於 sa 帳戶廣為人知且經常成為惡意用戶的攻擊目標,因此除非應用程序需要使用 sa 帳戶,否則請勿啟用該帳戶。切勿為 sa 帳戶設置空密碼或弱密碼。

2.2.6 解鎖登錄名

如果為SQL 登錄名啟用了“強制密碼策略”,可能會在某些場景中被鎖住該登錄名導致無法登錄。

可以為該登錄名在重設密碼後再解鎖。

ALTER LOGIN [SqlUser1] WITH PASSWORD = 'P@ssw0rd' UNLOCK ;

GO

如果不需要更改密碼,則可以通過關閉密碼策略並再次打開的方法解鎖該登錄名。

ALTER LOGIN [SqlUser1] WITH CHECK_POLICY = OFF;

ALTER LOGIN [SqlUser1] WITH CHECK_POLICY = ON;

GO

2.2.7 刪除登錄名

在 SSMS 中可以直接刪除某個登錄名。在刪除之前,請確保該登錄名當前沒有登錄到數據庫引擎,否則刪除登錄名失敗。

T-SQL 語句示例如下:

USE [master]

GO

DROP LOGIN [SqlUser1]

GO

2.4 數據庫用戶

2.4.1 數據庫用戶

用戶是數據庫級別的安全主體,用於對數據庫對象進行授權。

登錄名僅用於登錄到 SQL Server 實例,用戶則是壹個或多個登錄名在數據庫中的映射以便為登錄名提供對數據庫的訪問。創建登錄名時會默認將其映射為數據庫的用戶。

在安裝 SQL Server 後,數據庫有以下4個默認的用戶,不可以修改或刪除這些默認的用戶。

(1) dbo

通常 sa 登錄名、sysadmin 角色的成員、數據庫的擁有者被映射為 dbo 用戶。

(2) guest

數據庫的 guest 用戶默認為 public 服務器角色。僅允許登錄到 SQL Server 實例,但不能訪問數據庫。這個用戶類似於 Windows 的 everyone 帳戶。在用戶數據庫中,默認被禁用。如果為其授予 CONNECT 權限,則可以啟用 guest 用戶。

(3) INFORMATION_SCHEMA

在用戶數據庫中,默認被禁用。

(4) sys

在用戶數據庫中,默認被禁用。

2.4.2 基於登錄名的用戶

最常見的用戶是基於 master 數據庫中登錄名的用戶,有以下壹些具體的類型。

(1)基於 Windows 用戶的登錄名的用戶。

(2)基於 Windows 組的登錄名的用戶。

(3)基於 Windows 組成員的登錄名的用戶。這類 Windows 主體可以沒有登錄名,但可以通過 Windows 組(包括嵌套的組)中的成員身份連接到數據庫引擎。

(4)基於使用 SQL Server 身份驗證的登錄名的用戶。

通過 SSMS 可以創建“Windows 用戶”(必須帶登錄名)或者“帶登錄名的 SQL 用戶”。

T-SQL 語法示例如下:

CREATE USER [Domain1\WindowsUser1]

CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUser1

CREATE USER [Domain1\WindowsGroupManagers]

CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]

CREATE USER SQLAUTHLOGIN1

CREATE USER SQLAUTHLOGIN1 FOR LOGIN SQLAUTHLOGIN1

CREATE USER 語句中, FOR 子句與 FROM 子句可以相互替代。以下語句具有相同的作用。

CREATE USER [Domain1\WindowsUser1] FOR LOGIN Domain1\WindowsUser1

CREATE USER [Domain1\WindowsUser1] FROM LOGIN Domain1\WindowsUser1

2.4.3 包含數據庫的用戶

SQL Server 2012 引入了包含數據庫。在包含數據庫中,可以直接在數據庫級別進行身份驗證(繞過服務器級別),而無需在服務器級別創建登錄名。包括基於無登錄名的 “Windows 用戶”(或 Windows 組用戶)、“帶密碼的 SQL 用戶”。

T-SQL 語法示例如下:

CREATE USER [Domain1\WindowsUser1]

CREATE USER [Domain1\WindowsGroupManagers]

CREATE USER DbUser1 WITH PASSWORD = 'Password123'

在創建此類用戶時,不僅授予用戶對當前數據庫的訪問權限,並且還將授予對數據庫引擎的新訪問權限。但是在登錄到數據庫引擎時必須指定連接的數據庫名稱,否則登錄失敗。例如,在 SSMS 的“連接到服務器”對話窗口,必須單擊“選項”按鈕,然後在“連接屬性”選項卡中為“連接到數據庫”指定數據庫名稱。

  • 上一篇:常見的海鮮種類圖片及名稱有哪些
  • 下一篇:情侶之間增進感情小遊戲
  • copyright 2024編程學習大全網