開通博客園已有一段時間了,一直沒有寫過一篇博客,一是忙于工作,二是一直在想著寫怎樣的一篇博客,三是知識技術不到家,不敢亂寫了誤人子弟啊。開始我是想著寫有關.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登錄名下創建的數據,這時是無法訪問的:

由此可以看出,登錄名和權限的作用了。
到此,新建登錄名和用戶名,以及配置權限角色就結束了,這里只是簡單的對數據的登錄名,用戶名及架構和權限做了簡單是介紹和使用。具體的項目中大家可以根據不同所需來選擇創建不同的登錄名和用戶名以及權限和角色就可以了。以上有說錯的或者有不到之處望多多指教。
新聞熱點
疑難解答