文章詳情頁
編程管理sql server的帳號
瀏覽:137日期:2023-11-01 18:31:15
編程管理SQLSERVER的帳號;;;; 每個人都關心數(shù)據(jù)安全。 如果不關心的話,可能沒有意識到訪問服務器中的敏感數(shù)據(jù)是非常容易的。 因為SQLSERVER在這方面已經(jīng)替我們考慮過了, 所以在我們開發(fā)應用程序就可以直接使用SQLSERVER的安全策略。;; 在SQLSERVER中,我們可以在ENTERPRISEMANAGER中創(chuàng)建一個登錄帳號, 并且賦予一定的權限,如果要做到我們的應用程序中呢?;; ============================================================================== SQLSERVER提供了如下系統(tǒng)過程;; ▲▲一、SP_ADDLOGIN 創(chuàng)建新的MicrosoftSQLServer登錄,使用戶得以連接使用SQLServer身份驗證的SQLServer實例。 語法 sp_addlogin[@loginame=]'login' [,[@passwd=]'password'] [,[@defdb=]'database'] [,[@deflanguage=]'language'] [,[@sid=]sid] [,[@encryptopt=]'encryption_option'] 參數(shù) [@loginame=]'login' 登錄的名稱。login的數(shù)據(jù)類型為sysname,沒有默認設置。 [@passwd=]'password' 登錄密碼。password的數(shù)據(jù)類型為sysname,默認設置為NULL。sp_addlogin執(zhí)行后,password被加密并存儲在系統(tǒng)表中。 [@defdb=]'database' 登錄的默認數(shù)據(jù)庫(登錄后登錄所連接到的數(shù)據(jù)庫)。database的數(shù)據(jù)類型為sysname,默認設置為master。 [@deflanguage=]'language' 用戶登錄到SQLServer時系統(tǒng)指派的默認語言。language的數(shù)據(jù)類型為sysname,默認設置為NULL。如果沒有指定language,那么language被設置為服務器當前的默認語言(由sp_configure配置變量defaultlanguage定義)。更改服務器的默認語言不會更改現(xiàn)有登錄的默認語言。language保持與添加登錄時所使用的默認語言相同。 [@sid=]sid 安全標識號(SID)。sid的數(shù)據(jù)類型為varbinary(16),默認設置為NULL。如果sid為NULL,則系統(tǒng)為新登錄生成SID。盡管使用varbinary數(shù)據(jù)類型,非NULL的值也必須正好為16個字節(jié)長度,且不能事先存在。SID很有用,例如,如果要編寫SQLServer登錄腳本,或要將SQLServer登錄從一臺服務器移動到另一臺,并且希望登錄在服務器間具有相同的SID時。 [@encryptopt=]'encryption_option' 指定當密碼存儲在系統(tǒng)表中時,密碼是否要加密。encryption_option的數(shù)據(jù)類型為varchar(20),可以是下列值之一。 值 描述;; ------------------------------------------------------------------------------- NULL 加密密碼。這是默認設置。;; skip_encryption 密碼已加密。SQLServer應該存儲值而且不用重新對其加密。;; skip_encryption_old 已提供的密碼由SQLServer較早版本加密。SQLServer應該存儲值而且不用重新對其加密。此選項只供升級使用。;; ▲▲二、SP_GRANTDBACCESS 為MicrosoftSQLServer登錄或MicrosoftWindowsNT用戶或組在當前數(shù)據(jù)庫中添加一個安全帳戶,并使其能夠被授予在數(shù)據(jù)庫中執(zhí)行活動的權限。 語法: sp_grantdbaccess[@loginame=]'login' [,[@name_in_db=]'name_in_db'[OUTPUT]] 參數(shù): [@loginame=]'login' 當前數(shù)據(jù)庫中新安全帳戶的登錄名稱。WindowsNT組和用戶必須用WindowsNT域名限定,格式為'域用戶',例如LONDONJoeb。登錄不能使用數(shù)據(jù)庫中已有的帳戶作為別名。login的數(shù)據(jù)類型為sysname,沒有默認值。 [@name_in_db=]'name_in_db'[OUTPUT] 數(shù)據(jù)庫中帳戶的名稱。name_in_db是sysname類型的OUTPUT變量,默認值為NULL。如果沒有指定,則使用login。如果將其指定為NULL值的OUTPUT變量,則設置@name_in_db為login。當前數(shù)據(jù)庫不必存在name_in_db。 ▲▲三、SP_DROPLOGIN 刪除MicrosoftSQLServer登錄,以阻止使用該登錄名訪問SQLServer。 語法 sp_droplogin[@loginame=]'login' 參數(shù) [@loginame=]'login' 將被刪除的登錄。login的數(shù)據(jù)類型為sysname,沒有默認值。login必須已經(jīng)存在于SQLServer中。 ▲▲四、SP_REVOKEDBACCESS 從當前數(shù)據(jù)庫中刪除安全帳戶。 語法 sp_revokedbaccess[@name_in_db=]'name' 參數(shù) [@name_in_db=]'name' 是要刪除的帳戶名。name的數(shù)據(jù)類型為sysname,無默認值。name可以是Microsoft?SQLServer?用戶名或MicrosoftWindowsNT?用戶名或組名,而且必須存在于當前數(shù)據(jù)庫中。當指定WindowsNT用戶或組時,請指定該WindowsNT用戶或組在數(shù)據(jù)庫中可被識別的名稱(即用sp_grantdbaccess添加的名稱)。 ▲▲五、GRANT 在安全系統(tǒng)中創(chuàng)建項目,使當前數(shù)據(jù)庫中的用戶得以處理當前數(shù)據(jù)庫中的數(shù)據(jù)或執(zhí)行特定的Transact-SQL語句。 語法 語句權限: GRANT{ALL|statement[,...n]};; TOsecurity_account[,...n] 對象權限: GRANT {ALL[PRIVILEGES]|permission[,...n]} {;; [(column[,...n])]ON{table|view} |ON{table|view}[(column[,...n])] |ON{stored_procedure|extended_procedure} |ON{user_defined_function} };; TOsecurity_account[,...n];; [WITHGRANTOPTION];; [AS{group|role}] ▲▲六、REVOKE 刪除以前在當前數(shù)據(jù)庫內的用戶上授予或拒絕的權限。 語法 語句權限: REVOKE{ALL|statement[,...n]};; FROMsecurity_account[,...n] 對象權限: REVOKE[GRANTOPTIONFOR] {ALL[PRIVILEGES]|permission[,...n]} {;; [(column[,...n])]ON{table|view} |ON{table|view}[(column[,...n])] |ON{stored_procedure|extended_procedure} |ON{user_defined_function} };; {TO|FROM} security_account[,...n];; [CASCADE];; [AS{group|role}];; ▲▲SP_PASSWORD 添加或更改Microsoft?SQLServer?登錄的密碼。 語法 sp_password[[@old=]'old_password',] {[@new=]'new_password'} [,[@loginame=]'login'] 參數(shù) [@old=]'old_password' 是舊密碼。old_password為sysname類型,其默認值為NULL。 [@new=]'new_password' 是新密碼。new_password為sysname類型,無默認值。如果沒有使用命名參數(shù),就必須指定old_password。 [@loginame=]'login' 是受密碼更改影響的登錄名。login為sysname類型,其默認值為NULL。login必須已經(jīng)存在,并且只能由sysadmin固定服務器角色的成員指定。 ;; ============================================================================= 應用實例:;; --添加 --添加用戶: execsp_addlogin'用戶名','密碼','默認數(shù)據(jù)庫名' --添加到數(shù)據(jù)庫 execsp_grantdbaccess'用戶名','數(shù)據(jù)庫名' --分本權限 grantinsert,select,update,deleteontable1topublic;; --刪除;; --刪除權限 revokeinsert,deleteontable1frompublic;; --刪除數(shù)據(jù)庫中的用戶 execsp_revokedbaccess'用戶名' --刪除用戶 execsp_droplogin'用戶名'
排行榜
