創建用戶登錄註意事項 密碼是區分大小寫的。 只有創建SQL Server登錄時,才支持對密碼預先進行哈希運算。 如果指定MUST_CHANGE,則CHECK_EXPIRATION和 CHECK_POLICY必須設置為 ON。 否則,該語句將失敗。 不支持CHECK_POLICY=OFF和 CHECK ...
創建用戶登錄註意事項
密碼是區分大小寫的。
只有創建SQL Server登錄時,才支持對密碼預先進行哈希運算。
如果指定MUST_CHANGE,則CHECK_EXPIRATION和 CHECK_POLICY必須設置為 ON。 否則,該語句將失敗。
不支持CHECK_POLICY=OFF和 CHECK_EXPIRATION=ON的組合。
如果CHECK_POLICY設置為OFF,將對lockout_time進行重置,並將CHECK_EXPIRATION設置為OFF。
只有在Windows Server 2003及更高版本上才會強制執行CHECK_EXPIRATION 和 CHECK_POLICY。
從證書或非對稱密鑰創建的登錄名僅用於代碼簽名。不能用於連接到 SQL Server。僅當master中已存在證書或非對稱密鑰時,才能從證書或非對稱密鑰創建登錄名。
有關用於傳輸登錄名的腳本,請參閱如何在 SQL Server 2005 和 SQL Server 2008 的實例之間傳輸登錄名和密碼。
自動創建登錄名將啟用新的登錄名,並授予它伺服器級CONNECT SQL 許可權。
伺服器的身份驗證模式必須匹配登錄名類型才能允許訪問。
有關設計許可權系統的信息,請參閱 Getting Started with Database Engine Permissions。
只有具有針對伺服器的ALTER ANY LOGIN許可權或securityadmin固定伺服器角色的成員身份的用戶才可創建登錄。
如果使用CREDENTIAL選項,則還需要對此伺服器的ALTER ANY CREDENTIAL許可權。
使用SSMS資料庫管理工具創建用戶登錄
1、連接資料庫-》展開安全性-》選擇登錄名-》選擇新建登錄名。
2、在登錄名-新建彈出框-》點擊常規-》輸入登錄名-》選擇sqlserver身份驗證-》輸入密碼-》選擇不強制實施密碼過期策略-》選擇預設資料庫-》選擇預設語言。
3、在登錄名-新建彈出框-》點擊伺服器角色-》選擇要向角色授予的安全特權。
4、在登錄名-新建彈出框-》點擊用戶映射-》選擇用戶可以登錄的資料庫-》選擇用戶擁有的登錄資料庫的許可權。
5、在登錄名-新建彈出框-》點擊安全對象-》點擊搜索添加安全對象-》安全對象添加完成後選擇安全對象許可權。
6、在登錄名-新建彈出框-》點擊狀態-》選擇預設即可。
7、點擊確定-》查看添加結果。
使用T-SQL腳本創建用戶登錄
語法
--聲明資料庫引用
use testss;
go
創建用戶登錄
create login login_name
with
password={ 'password' | hashed_password hashed }
[must_change][,]
[sid=0x14585E90117152449347750164BA00A7][,]
[default_database=database_name][,]
[default_language=language][,]
[check_expiration={ on | off }][,]
[check_policy={ on | off }][,]
[credential=credential_name]
語法註釋
--login_name
--指定創建的登錄名。有四種類型的登錄:SQLServer登錄、Windows登錄、證書映射登錄和非對稱密鑰映射登錄。
--在創建從Windows域帳戶映射的登錄名時,必須以[<domainName>\<login_name>]格式使用Windows 2000之前的用戶登錄名。
--不能使用login_name@DomainName格式的UPN。
--有關示例,請參閱本文後面的示例D。身份驗證登錄的類型為sysname,它必須符合標識符規則,且不能包含“\”。
--Windows登錄名可以包含“\”。Active Directory用戶的登錄名需少於21個字元。
--password='password*'
--僅適用於SQL Server登錄。指定正在創建的登錄名的密碼。應使用強密碼。
--有關詳細信息,請參閱強密碼和密碼策略。從SQL Server 2012 (11.x)開始,存儲的密碼信息使用 SHA-512 加鹽密碼進行計算。
--密碼是區分大小寫的。密碼應始終至少包含 8 個字元,並且不能超過128個字元。
--密碼可以包含 a-z、A-Z、0-9 和大多數非字母數字字元。 密碼不能包含單引號或 login_name。
--password=hashed_password
--僅適用於hashed關鍵字。指定要創建的登錄名的密碼的哈希值。
--hashed僅適用於SQL Server登錄。指定在password參數後輸入的密碼已經過哈希運算。
--如果未選擇此選項,則在將作為密碼輸入的字元串存儲到資料庫中之前,對其進行哈希運算。
--此選項應僅用於在伺服器之間遷移資料庫。切勿使用hashed選項創建新的登錄名。hashed選項不能用於SQL 7或更早版本創建的哈希。
--must_change
--僅適用於SQL Server登錄。如果包括此選項,則SQL Server將在首次使用新登錄時提示用戶輸入新密碼。
--sid=sid
--用於重新創建登錄名。僅適用於SQL Server身份驗證登錄,不適用於Windows身份驗證登錄。指定新SQL Server身份驗證登錄的sid。
--如果未使用此選項,SQL Server將自動分配sid。sid結構取決於SQL Server版本。 QL Server登錄sid:基於GUID的16 位元組(binary(16))文本值。 例如,sid 0x14585E90117152449347750164BA00A7。
--default_database=database
--指定將指派給登錄名的預設資料庫。如果未包括此選項,則預設資料庫將設置為master。
--default_language=language
--指定將指派給登錄名的預設語言。如果未包括此選項,則預設語言將設置為伺服器的當前預設語言。即使將來伺服器的預設語言發生更改,登錄名的預設語言也仍保持不變。
--check_expiration={ on | off }
--僅適用於SQL Server登錄。 指定是否應對此登錄帳戶強制實施密碼過期策略。 預設值為off。
--check_policy={ on | off }
--僅適用於SQL Server登錄。 指定應對此登錄強制實施運行SQL Server 電腦的 Windows 密碼策略。 預設值為on。
--如果 Windows 策略要求強密碼,密碼必須至少包含以下四個特點中的三個:
--大寫字元 (A-Z)。
--小寫字元 (a-z)。
--數字 (0-9)。
--一個非字母數字字元,如空格、、@、*、^、%、!、$、# 或 &。
--credential=credential_name
--將映射到新SQL Server登錄的憑據名稱。 該憑據必須已存在於伺服器中。當前此選項只將憑據鏈接到登錄名。憑據不能映射到系統管理員(sa)登錄名。
示例
--聲明資料庫引用
use testss;
go
--創建登錄用戶
create login testuser
with
password='123456',
--must_change,
--sid=0x14585E90117152449347750164BA00A7,
default_database=master,
--default_language=language,
check_expiration=off,
check_policy=off
--credential=[sysadmin]
go
--可以添加多個伺服器角色
--創建伺服器角色, 伺服器角色用於向用戶授權伺服器範圍內的安全特權
--alter server role [bulkadmin] add member testuser;
--go
--alter server role [dbcreator] add member testuser;
--go
--alter server role [diskadmin] add member testuser;
--go
--alter server role [processadmin] add member testuser;
--go
--alter server role [securityadmin] add member testuser;
--go
--alter server role [serveradmin] add member testuser;
--go
--alter server role [setupadmin] add member testuser;
--go
alter server role [sysadmin] add member testuser;
go
--創建用戶映射,映射到此登錄名的用戶
use [model]
go
create user testuser for login testuser;
go
--use [msdb]
--go
--create user testuser for login testuser;
--go
--use [ReportServer]
--go
--create user testuser for login testuser;
--go
--use [ReportServerTempDB]
--go
--create user testuser for login testuser;
--go
--use [tempdb]
--go
--create user testuser for login testuser;
--go
use [testss]
go
create user testuser for login testuser;
go
----創建用戶登錄資料庫
--use [master]
--go
--create user [testuser] for login [testuser];
--go
----創建用戶登錄多個資料庫
--use [testss]
--go
--create user [testuser] for login [testuser];
--go
----聲明資料庫應用
--use [testss]
--go
----授予不安全的程式集
--grant unsafe assembly to testuser;
--go
----授予查看伺服器狀態
--grant view server state to testuser;
--go
----授予查看任意定義
--grant view any definttion to testuser;
--go
----授予查看任意資料庫
--grant view any database to testuser;
--go
----授予創建DDL事件通知
--grant create ddl event notification to testuser;
--go
----授予創建端點
--grant create endpoint to testuser;
--go
----授予創建伺服器角色
--grant create server role to testuser;
--go
----授予創建跟蹤事件通知
--grant create trace event notification to testuser;
--go
----授予創建可用性組
--grant create availability group to testuser;
--go
----授予創建任意資料庫
--grant create any database to testuser;
--go
----授予更改伺服器狀態
--grant alter server state to testuser;
--go
----授予更改跟蹤
--grant alter trace to testuser;
--go
----授予更改任何伺服器角色
--grant alter any server role to testuser;
--go
----授予更改任何可用性組
--grant alter any availability group to testuser;
--go
----授予更改任意登錄名
--grant alter any login to testuser;
--go
----授予更改任意端點
--grant alter any endpoint to testuser;
--go
----授予更改任意伺服器審核
--grant alter any server audit to testuser;
--go
----授予更改任意許可權
--grant alter any connection to testuser;
--go
----授予更改任意連接伺服器
--grant alter any linked server to testuser;
--go
----授予更改任意憑據
--grant alter any credential to testuser;
--go
----授予更改任意事件會話
--grant alter any event session to testuser;
--go
----授予更改任意事件通知
--grant alter any event notification to testuser;
--go
----授予更改任意資料庫
--grant alter any database to testuser;
--go
----授予更改設置
--grant alter settings to testuser;
--go
----授予更改資源
--grant alter resources to testuser;
--go
----授予關閉
--grant shutdown to testuser;
--go
----授予管理大容量操作
--grant administer bulk operations to testuser;
--go
----授予控制伺服器
--grant control server to testuser;
--go
----授予連接SQL
--grant connect sql to testuser;
--go
----授予外部訪問程式集
--grant external access assembly to testuser;
--go
----授予驗證伺服器
--grant authenticate server to testuser;
--go
--設置是否允許連接到資料庫引擎
--deny connect sql to testuser;
--go
--是否允許登錄
--alter login testuser disable;
--go
----用戶狀態
----聲明預設資料庫引用
--use [testuser]
--go
----是否允許用戶連接到資料庫引擎
--deny connect sql to [testuser];
--go
----是否允許登錄
--alter login [testuser] disable
--go
示例結果
使用新創建的用戶名登錄
1、在對象資源管理器中-》點擊新建連接。
2、在連接到伺服器彈出框-》選擇sqlserver身份驗證-》輸入用戶名和密碼-》點擊連接。
3、查看結果。