標籤:style blog http ar os 使用 sp for on
開通部落格園已有一段時間了,一直沒有寫過一篇部落格,一是忙於工作,二是一直在想著寫怎樣的一篇部落格,三是知識技術不到家,不敢亂寫了誤人子弟啊。開始我是想著寫有關.NET的部落格,沒料第一篇是有關資料庫的。我第一次接觸資料庫時還是在課堂上,當時老師講的知識點很簡單就是增、刪、改、查。感覺資料庫沒什麼技術含量,無非就是查查資料該改資料,就這麼簡單,也沒把資料庫當成一門技術去深入的研究。一直到工作了之後,隨著項目的要求不斷增加,對資料的安全的要求也越來嚴格,因此對資料庫的研究也不斷加深,才感覺到其實資料庫很是博大精深的,真的要花時間好好的去學習去研究。
這段時間正好閑下來了,把這幾天對資料理解的一些知識點總結一下,我也是新手,當然對資料的認識也是膚淺的,有不到之處望大家多多指教。
這幾天先是研究了一下有關資料庫的安全性、許可權等方面的東西,那就是先說一下資料庫安全性和許可權的問題,首先是對資料庫的登入名稱、使用者和架構做一個簡單的介紹。登入名稱大家都知道就是登入資料庫時用的名稱,比如資料庫預設的登入名稱sa,如果不對sa登入名稱的許可權做改動的話,sa登入後對資料庫所有功能有完全的訪問系統管理權限。那麼什麼是使用者名稱呢?拿sa登入名稱來說,當用sa登入資料庫後建立一個資料庫,展開資料庫下面的安全性-使用者,可以看到有dbo、sys、guest等使用者名稱,而sa登入後所有的操作的使用者就是dbo,這個也是資料庫預設的。也就是說sa是登入名稱,登陸後的使用者名稱是dbo。那麼架構呢?大家都知道當我們用sa登入資料庫後建立一個表UserInfor,那麼當展開資料庫後可以看到dbo.UserInfor,這個dbo是架構名,而非使用者名稱,一開始我也不明白在網上查了一些資料,有的說dbo.UserInfor是使用者名稱,到底是什麼呢?下面我們做一個測試。
對許可權的限制可以使用登入名稱結合使用者來實現,我面就先建立一個登入名稱,命名為me。首先我們先看一下資料庫“安全性”節點。
我們可以看到有我們登入的sa登入名稱,接著我們在登入名稱上右鍵建立一個新登入名稱me。
這個地方,我們用Sql Server身分識別驗證登入,在伺服器角色欄只勾選public,狀態列選擇授予和啟用,具體的設定後面說。確定即可。這時再看登入名稱節點可以看到新建立的登入名稱me。
然後我們再建立一個資料庫UserData,接著針對這個資料庫我們在資料庫的安全性節點的架構中建立一個架構medbo。
填寫一個架構名即可,如下:
確定即可,然後再針對資料庫在使用者節點建立一個使用者名稱mename,這裡主要是和架構做區分。
這裡需要注意一下,登入名稱要選me,預設架構medbo,使用者擁有的架構要勾選剛剛建立的架構,角色成員選db_owner。確定即可,這時就可以看到剛才建立的使用者名稱和架構了。
然後去安全性節點,展開使用者名稱找到me使用者右鍵屬性,使用者映射選項,可以看到
到這裡登入名稱和使用者名稱以及架構都建立了好,那麼怎麼用呢,我們可以用剛剛建立的登入名稱me重新登入一下資料庫,在UserData資料庫中建立一張表UserInfor。
可以看到建立的表是medbo.UserInfor,而不是mename.UserInfor。由此可見,用sa登入後建立的表代表dbo.Table這dbo是架構,而非使用者名稱。
那麼許可權和角色怎麼設定呢?接著我們回到me登入名稱的屬性那,查看伺服器角色選項,
可以看到有多個服務期角色,而剛才我們建立me登入名稱的時候只勾選了public,每一角色代表什麼呢?下面介紹一下。
bulkadmin:這個伺服器角色的成員可以運行bulk insert語句
dbcreater:可以建立、更改、刪除和還原任何資料庫
diskadmin:管理磁碟檔案,比如鏡像資料庫和添加備份裝置
prosessadmin:多任務化可以通過執行多個進程執行多件事
securityadmin:管理登入名稱和屬性
serveradmin:可以更改伺服器範圍內的配置選項和關閉伺服器
setupadmin:為需要管理連結的伺服器和空值啟動的預存程序的使用者設定,能增加、配置和刪除連結的伺服器,並能空值啟動過程
sysadmin:執行任何任務
public:初始狀態時沒有許可權,所有資料庫都有他的成員
接著看一下使用者映射選項
也有多個角色,每一個角色如下:
db_owner:在資料庫中執行任何操作
db_accessadmin:從資料庫中增加或刪除使用者
db_backupopperator:允許備份資料庫
db_datareader:允許從任何錶中讀取資料
db_datawriter:允許網任何錶中寫入資料
db_ddladmin:允許增加、修改和刪除任何對象
db_denydatareader:拒絕查看任何資料,但可以通過預存程序查看
db_denydatawriter:拒絕修改任何資料,但可以通過預存程序修改
db_securityadmin:可以更改資料庫中的許可權和角色
public:每個資料庫角色都屬於public角色,當尚未對某個使用者授予或拒絕對安全性實體的特定許可權時,該使用者將授予該安全性實體的public角色許可權,且不能刪除。
還有一點,就是me登入名稱屬性的使用者映射中我們只勾選了UserData資料庫,其他的沒有勾選,如果我們用me登入名稱登入資料庫然後訪問sa登入名稱下建立的資料,這時是無法訪問的:
由此可以看出,登入名稱和許可權的作用了。
到此,建立登入名稱和使用者名稱,以及配置許可權角色就結束了,這裡只是簡單的對資料的登入名稱,使用者名稱及架構和許可權做了簡單是介紹和使用。具體的項目中大家可以根據不同所需來選擇建立不同的登入名稱和使用者名稱以及許可權和角色就可以了。以上有說錯的或者有不到之處望多多指教。
Sql Server 2008 R2資料庫之登入名稱、使用者、架構、許可權和角色