SQLServer控制使用者訪問許可權表

fbh發表於2017-08-24

一、需求

在管理資料庫過程中,我們經常需要控制某個使用者訪問資料庫的許可權,比如只需要給這個使用者訪問某個表的許可權,甚至是CRUD的許可權,更小粒度的還可以去到某幾個欄位的訪問許可權。寫這篇文章就是說明下這個操作過程。

其實這只是SQL Server許可權管理很簡單的一小塊,有些地方並沒有深入理解和講述,只是希望對一些剛入門的童鞋有幫助,其它大俠就當是:我當堂嚇一跳,然後得啖笑。(賭聖)

 

二、操作步驟

1.     
首先進入資料庫級別的【安全性】-【登入名】-【新建登入名】

圖1:新建登入名

2.     
在【常規】選項卡中,如下圖所示,建立登陸名,並設定預設的資料庫

圖2:設定選項

3.     
在【使用者對映】選項卡中,如下圖所示,勾選需要設定的資料庫,並設定【架構】,點選【確認】按鈕,完成建立使用者的操作

圖3:選擇對應資料庫

4.     
現在我們就可以對TestLog資料庫中的User表進行許可權的設定了,【表】-【 屬性】

圖4:選擇對應表

5.     
在【許可權】選項卡中,如下圖所示,依此點選【新增】-【瀏覽】-【選擇物件】

 

圖5:設定訪問表的使用者

6.     
在上面點選【確認】後,我們就可以下面的列表中找到對應的許可權,如果你還想細化到列的許可權的話,右下角還有一個【列許可權】的按鈕可以進行設定,點選【確認】按鈕就完成了這些許可權的設定了

圖6:許可權列表

7.     
現在就使用TestUser使用者登陸資料庫了,登陸後如下圖所示,現在只能看到一個表了

圖7:效果

 

三、注意事項

1.     
在上面的第3步驟中需要注意:如果這裡沒有選擇對應的資料庫的話,之後去TestLog資料庫中是找不到TestUser。

圖8:找不到TestUser使用者

2.     
在上面的第3步驟,設定完TestLog資料後,需要點選【確認】按鈕,完成建立使用者操作,如果這個時候去設定【安全物件】,是無法在【新增】-【特定物件】-【物件型別】-【登陸名】-【瀏覽】中找到剛剛新建的TestUser使用者的。

3.     
其 實在資料庫級別的【安全性】建立的使用者是屬於全域性的,當設定了某個資料庫,比如TestLog之後,這個使用者就會出現在這個資料庫的【安全性】列表中。如 果刪除TestLog這個使用者,會出現下面的提示。刪除了後,這個使用者就無法登陸了。需要去對應的資料庫中刪除使用者,如果沒有刪除又建立,是會報錯的。

圖9:刪除TestUser使用者

4.     
在第6步的【顯式許可權】列表中,如果選擇了【Control】這個選項,那麼在【Select】中設定查詢【列許可權】就沒有意義了,查詢就不會受限制了。如果設定【列許可權】,在正常情況下會顯示下圖的報錯資訊:

圖10:效果

5.     
在TestLog資料庫的【安全性】-【TestUser】-【屬性】-【安全物件】-【新增】-【物件型別】這裡有更多關於資料庫級別的一些物件型別可以設定。

圖11:其它物件型別


轉載至:http://www.cnblogs.com/yxyht/archive/2013/03/22/2975880.html


相關文章