修改登陸賬戶信息註意事項 如果 CHECK_POLICY設置為ON,則無法使用 HASHED參數。 如果 CHECK_POLICY更改為ON,則將出現以下行為: 用當前的密碼哈希值初始化密碼歷史記錄。 如果 CHECK_POLICY 更改為 OFF,則將出現以下行為: CHECK_EXPIRATIO ...
修改登陸賬戶信息註意事項
如果 CHECK_POLICY設置為ON,則無法使用 HASHED參數。
如果 CHECK_POLICY更改為ON,則將出現以下行為:
-
用當前的密碼哈希值初始化密碼歷史記錄。
如果 CHECK_POLICY 更改為 OFF,則將出現以下行為:
-
CHECK_EXPIRATION 也設置為 OFF。
-
清除密碼歷史記錄。
-
重置 lockout_time 的值。
如果指定MUST_CHANGE,則CHECK_EXPIRATION和CHECK_POLICY必須設置為ON。 否則,該語句將失敗。
如果CHECK_POLICY設置為OFF,則CHECK_EXPIRATION不能設置為ON。 包含此選項組合的 ALTER LOGIN 語句將失敗。
不能使用帶DISABLE 參數的ALTER_LOGIN來拒絕對Windows 組的訪問。 例如,ALTER_LOGIN [domain\group] DISABLE將返回下列錯誤信息:
"消息 15151,級別 16,狀態 1,第 1 行"
"無法更改登錄名 'Domain\Group',因為它不存在,或者你沒有相應許可權。"
這是設計的結果。
在SQL Database中,對連接和伺服器級別的防火牆規則進行身份驗證時所需的登錄數據會暫時緩存在每個資料庫中。 此緩存定期刷新。 若要強制刷新身份驗證緩存並確保資料庫具有最新版本的登錄名錶,請執行DBCC FLUSHAUTHCACHE (Transact-SQL)。
需要ALTER ANY LOGIN許可權。
如果使用CREDENTIAL選項,則還需要ALTER ANY CREDENTIAL許可權。
如果正在更改的登錄名是sysadmin固定伺服器角色的成員或CONTROL SERVER許可權的被授權者,則進行以下更改時還需要CONTROL SERVER許可權:
-
在不提供舊密碼的情況下重置密碼。
-
啟用MUST_CHANGE、CHECK_POLICY或CHECK_EXPIRATION。
-
更改登錄名。
-
啟用或禁用登錄名。
-
將登錄名映射到其他憑據。
主體可更改用於自身登錄的密碼、預設語言以及預設資料庫。
使用SSMS資料庫管理工具修改登陸賬戶信息
1、連接資料庫-》展開安全性-》展開登陸名-》選擇要修改的登陸賬戶-》右鍵點擊-》選擇屬性。
2、在登陸屬性彈出框-》點擊常規-》修改登陸名、密碼、證書、映射到憑據、預設資料庫、語言等。
3、在登陸屬性彈出框-》點擊伺服器角色-》修改伺服器角色(資料庫角色指定了可以訪問相同資料庫對象的一組資料庫用戶)。
4、在登陸屬性彈出框-》點擊伺服器角色-》修改用戶映射(登錄名用於授權並訪問伺服器資源,如果需要訪問資料庫,需要對資料庫內部的用戶進行映射。用戶是資料庫級別的安全主體,訪問資料庫資源是授予給用戶,而不是登錄名。)。
5、在登陸屬性彈出框-》點擊安全對象-》修改資料庫安全對象和安全對象許可權(安全對象,是SQL Server 資料庫引擎授權系統控制對其進行訪問的資源。通俗點說,就是在SQL Server許可權體系下控制的對象,因為所有的對象(從伺服器,到表,到視圖觸發器等)都在SQL Server的許可權體系控制之下,所以在SQL Server中的任何對象都可以被稱為安全對象)。
6、在登陸屬性彈出框-》點擊狀態-》修改登陸賬戶狀態(禁用用戶登陸或者連接資料庫)。
使用T-SQL腳本修改登陸賬戶信息
啟用或禁用此登錄名
語法
--聲明資料庫引用
use database_name;
go
--創建登錄用戶
alter login login_name { enable | disable }
go
語法解析
--database_name
--資料庫名
--login_name
--指定正在更改的SQL Server登錄名的名稱。 域登錄名必須用方括弧括起來,其格式為[domain\user]。
--enable | disable
--啟用或禁用此登錄名。 禁用登錄名不會影響已連接登錄名的行為。
--(使用 KILL 語句終止現有連接。)禁用的登錄名將保留它們的許可權,且仍然可以模擬。
示例
--聲明資料庫引用
use testss;
go
--創建登錄用戶
alter login testuser
disable
go
示例結果
更改登錄帳戶的屬性
語法
--聲明資料庫引用
use database_name;
go
--修改登錄賬戶屬性
alter login login_name
with
password={ 'password' | hashed_password hashed [old_password='oldpassword' [must_change | unlock] ]}[,]
default_database=database[,]
default_language=language[,]
name=login_name[,]
check_policy={ on | off }[,]
check_expiration={ on | off }[,]
credential=credential_name[,]
no credential[,]
add credential credential_name[,]
drop credential credential_name
語法解析
--database_name
--資料庫名稱
--login_name
--指定正在更改的SQL Server登錄名的名稱。 域登錄名必須用方括弧括起來,其格式為 [domain\user]。
--password='password*'
--僅適用於SQL Server登錄名。指定正在更改的登錄名的密碼。密碼是區分大小寫的。
--與SQL資料庫持續保持活動連接需要至少每隔10小時進行重新授權(由資料庫引擎執行)。
--資料庫引擎使用最初提交的密碼嘗試重新授權,且無需用戶輸入。出於性能原因,在SQL資料庫中重置密碼時,連接將不會重新進行身份驗證,即使該連接因連接池而重置。
--這與本地SQLServer的行為不同。如果自最初授權連接時已更改密碼,則必須終止連接,並使用新密碼建立新連接。具有KILL DATABASE CONNECTION許可權的用戶可使用KILL命令,顯式終止與SQL資料庫的連接。
--password=hashed_password
--僅適用於HASHED關鍵字。指定要創建的登錄名的密碼的哈希值。
--hashed
--僅適用於SQL Server登錄名。 指定在PASSWORD參數後輸入的密碼已經過哈希運算。
--如果未選擇此選項,則在將密碼存儲到資料庫之前,對其進行哈希運算。此選項只能用於在兩台伺服器之間同步登錄名。 切勿使用HASHED選項定期更改密碼。
--old _password='oldpassword'
--僅適用於SQL Server登錄名。要指派新密碼的登錄的當前密碼。密碼是區分大小寫的。
--must_change
--適用範圍: SQL Server 2008 到 SQL Server 2017、並行數據倉庫。
--僅適用於SQL Server 登錄名。 如果包括此選項,則SQL Server將在首次使用已更改的登錄名時提示輸入更新的密碼。
--unlock
--適用範圍:SQL Server 2008到SQL Server 2017、並行數據倉庫。
--僅適用於SQL Server登錄名。 指定應解鎖被鎖定的登錄名。
--default_database=database
--適用範圍:SQL Server 2008到SQL Server 2017。
--指定將指派給登錄名的預設資料庫。
--default_language=language
--適用範圍: SQL Server 2008 到 SQL Server 2017。
--指定將指派給登錄名的預設語言。 所有SQL資料庫登錄名的預設語言為英語,並且無法更改。
--Linux上SQL Server的sa登錄名的預設語言是英語,但可以更改。
--name=login_name
--正在重命名的登錄的新名稱。
--如果是Windows登錄,則與新名稱對應的Windows主體的SID必須匹配與SQL Server中的登錄相關聯的SID。
--SQL Server登錄名的新名稱不能包含反斜杠字元 (\)
--check_expiration={ on | off }
--適用範圍:SQL Server 2008到SQL Server 2017、並行數據倉庫。
--僅適用於SQL Server登錄名。指定是否應對此登錄帳戶強制實施密碼過期策略。預設值為OFF。
--check_policy={ on | off }
--適用範圍:SQL Server 2008到SQL Server 2017、並行數據倉庫。
--僅適用於SQL Server登錄名。指定應對此登錄名強制實施運行SQL Server的電腦的Windows密碼策略。 預設值為ON。
--credential=credential_name
--適用範圍:SQL Server 2008到SQL Server 2017。
--將映射到SQL Server登錄的憑據的名稱。該憑據必須已存在於伺服器中。
--有關詳細信息,請參閱憑據(資料庫引擎)。憑據不能映射到sa登錄名。
--no credential
--適用範圍:SQL Server 2008到SQL Server 2017。
--刪除登錄到伺服器憑據的當前所有映射。
--add credential
--適用範圍:SQL Server 2008到SQL Server 2017。
--將可擴展的密鑰管理 (EKM) 提供程式憑據添加到登錄名。有關詳細信息,請參閱可擴展的密鑰管理(EKM)。
--drop credentiil
--適用範圍:SQL Server 2008到SQL Server 2017。
--從登錄名刪除可擴展密鑰管理 (EKM) 提供程式憑據。有關詳細信息,請參閱可擴展的密鑰管理(EKM)。
示例
--聲明資料庫引用
use testss;
go
--修改登陸賬戶屬性
alter login testuser
with
password='1234',
--default_database=database[,]
--default_language=language[,]
name=testuser,
check_policy=on,
check_expiration=on
--credential=credential_name [,]
--no credential[,]
--add credential credential_name[,]
--drop credential credential_name
--可以添加多個伺服器角色
--創建伺服器角色, 伺服器角色用於向用戶授權伺服器範圍內的安全特權
--alter server role [bulkadmin] drop member [testuser];
--go
--alter server role [dbcreator] drop member [testuser];
--go
--alter server role [diskadmin] drop member [testuser];
--go
--alter server role [processadmin] drop member [testuser];
--go
--alter server role [securityadmin] drop member [testuser];
--go
--alter server role [serveradmin] drop member [testuser];
--go
--alter server role [setupadmin] drop member [testuser];
--go
--alter server role [sysadmin] drop member [testuser];
--go
--創建用戶映射,映射到此登錄名的用戶
--use [master]
--go
--drop user [testuser]
--go
--use [msdb]
--go
--drop user [testuser]
--go
--use [ReportServer]
--go
--drop user [testuser]
--go
--use [ReportServerTempDB]
--go
--drop user [testuser]
--go
--use [tempdb]
--go
--drop user [testuser]
--go
--use [testss]
--go
--drop user [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] { enable | disable }
--go
示例結果