首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> SQL Server 2005

SQL Server 2005 用戶權限精細控制:限制表與欄位訪問的圖文教學

     編輯:SQL Server 2005

需求背景

在數據庫管理中,常需精確控制特定用戶的訪問權限。例如,僅授予某用戶訪問特定表的權限,甚至細化到該表的 CRUD(增刪改查)操作,或進一步限制到幾個敏感欄位。本文將通過圖文並茂的方式,詳細演示這一操作流程,幫助初學者快速掌握 SQL Server 2005 的權限管理基礎。

操作步驟

1. 建立登錄名

打開 SQL Server Management Studio,展開伺服器節點,依次進入【安全性】→【登錄名】,右鍵選擇【新建登錄名】。

新建登錄名

圖 1:新建登錄名介面

2. 設定常規選項

在【常規】頁籤中,輸入登錄名(如 TestUser),選擇「SQL Server 驗證」並設定密碼,指定預設資料庫為目標資料庫(如 TestLog)。

設定選項

圖 2:設定登錄名與預設資料庫

3. 用戶映射與架構設定

切換到【用戶映射】頁籤,勾選目標資料庫(TestLog),在「架構」欄選擇 dbo(或其他所需架構),點擊【確定】完成用戶建立。

選擇對應數據庫

圖 3:映射資料庫與設定架構

4. 針對特定表設定權限

展開 TestLog 資料庫,右鍵目標表(如 User 表)選擇【屬性】,進入【權限】頁籤。

選擇對應表

圖 4:開啟表屬性視窗

5. 新增用戶並授予權限

在權限頁籤點擊【添加】→【瀏覽】→【選擇對象】,輸入剛建立的 TestUser,確定後在權限列表中勾選所需權限(如 SELECT、INSERT、UPDATE、DELETE)。

設置訪問表的用戶

圖 5:為用戶分配表級權限

6. 細化至欄位級權限(可選)

若需控制特定欄位,點擊右下角【列權限】按鈕,在彈出視窗中為各欄位單獨設定 SELECT 或 UPDATE 權限,完成後點擊【確定】。

權限列表

圖 6:欄位級權限設定介面

7. 驗證效果

使用 TestUser 登入 SSMS,展開資料庫表節點,將僅能看到已授權的 User 表,其他表將不可見。

效果

圖 7:用戶視角下的表可見性

關鍵注意事項

  1. 用戶映射不可漏選:步驟 3 中必須勾選目標資料庫,否則後續在該資料庫的安全性節點下找不到該用戶(見圖 8)。
  2. 先確定建立用戶,再配置安全對象:若在用戶映射確定前嘗試在【安全對象】中添加,將無法檢索到新建用戶。
  3. 登錄名與資料庫用戶的關係:伺服器級登錄名屬全局,映射到資料庫後會在該資料庫【安全性】→【用戶】下顯示。直接刪除資料庫用戶會導致登錄無法連線,需先在資料庫層面刪除用戶,再處理伺服器登錄名。
  4. Control 權限會覆蓋欄位限制:若在顯式權限列表中勾選了 Control,則欄位級的 SELECT 限制將失效,查詢不受欄位約束;正確設定欄位權限時,未授權欄位查詢會報錯(見圖 10)。
  5. 資料庫級安全性提供更多對象類型:在資料庫【安全性】→【用戶】→【屬性】→【安全對象】中,可對結構描述、組件、非對稱金鑰等更多對象類型授權(見圖 11)。

找不到TestUser用戶

圖 8:未映射資料庫導致用戶不可見

刪除TestUser用戶

圖 9:刪除資料庫用戶的提示

欄位權限報錯效果

圖 10:欄位權限生效時的報錯示例

其他對象類型

圖 11:資料庫級可授權的對象類型

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved