SQLServer修改登陸賬戶信息


修改登陸賬戶信息注意事項

如果 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

示例結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM