SQL Server 如何設置某用戶只能訪問特定的表、視圖、存儲過程


一、設置用戶只能操作已授權的對象(表、視圖、存儲過程)

本文將介紹如何只想讓某個用戶訪問數據庫特定的表或視圖,達到保密的效果,本文演示表的設置過程,存儲過程和視圖同理。但這個流程設置完用戶可以看到所有的數據庫名,隱私性不強(點擊未授權的數據庫提示未授權,無法訪問)。

在設置之前我們要先檢查public角色的“查看任意數據庫”權限是否勾選(默認是勾選的),如果取消勾選下方創建用戶看不到任何數據庫。

1、登錄SSMS之后選擇安全性,右鍵點擊登錄名。在彈出的右鍵菜單中選擇【新建登錄名】選項。

 2、在新建登錄名界面中的,常規頁面輸入新的登錄名並設定密碼。可以取消勾選用戶下次登錄時必須更改密碼選項。最后設定默認數據庫。

3、接下來在用戶映射頁面中,勾選映射需要配置的數據庫STAR_EMES。下方的數據庫角色成員身份只勾一個public即可。點擊確定按鈕完成新用戶創建。

 4、展開STAR_EMES數據庫需要授權的對象,這里演示Basal_Equipment表,右鍵》屬性》權限》搜索》輸入前面創建的用戶test2》確定》勾選需要授權的操作類型》確定

 

5、使用前面創建的用戶登錄數據庫,登錄后點開STAR_EMES數據庫,可以看到只顯示Basal_Equipment表。

二、設置用戶只能查看並訪問特定數據庫(不推薦)

ps:此方法,只適用於此數據庫只設置一次當前行為,否則下次設置會取代授權的數據庫的db_owner權限,設置時先查看數據庫的所有者。

1.新建登錄用戶 

以管理員身份登陸數據庫(權限最高的身份如sa),點擊安全性->登錄名,右鍵新建登錄名,輸入登錄名和密碼,取消強制實施密碼策略。 

2.將服務器角色設置為public 

注意:很重要的一步驟,檢查【用戶映射】中該用戶是否有對應的數據庫權限,如果有請把勾去掉,否則會影響第4點的操作結果

3.將public服務器角色的屬性->取消查看所有數據庫的權限 

點擊安全性->服務器角色->public,右鍵屬性。點擊服務器后如下圖取消查看任意數據庫的權限

或者執行如下SQL: 
REVOKE VIEW ANY DATABASE TO [public]

4.將待授權的數據庫的db_owner指派給剛注冊的新用戶 

在數據庫中新建查詢,輸入下列sql語句。完成對用戶權限的設定,做到了新建用戶只能查看和操作特定數據庫(除系統數據庫外)

Use [WH_R]//WH_R為數據庫名稱
  go

   EXEC dbo.sp_changedbowner N'user'//user為剛新建的用戶

注意:此處的設置不能手動取消,也無法刪除上述用戶,會有錯誤提示:

 解決辦法,執行sql修改該數據庫的所有者

Use [WH_R]//WH_R為數據庫名稱
  go

   EXEC dbo.sp_changedbowner N'sa'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM