iT邦幫忙

0

SQL Server SSMS中,建立兩位A、B者及兩個資料庫A、B 如何讓A登入只看到A資料庫顯示出來,且針對A資料庫只有 唯讀權限。

  • 分享至 

  • xImage

各位前輩好

目前有一個問題:
SQL Server SSMS中,建立兩位A、B者及兩個資料庫A、B
如何讓A登入只看到A資料庫顯示出來,且針對A資料庫只有
唯讀權限。
參考作法如下:
1.創建登入帳戶:
開啟 SQL Server Management Studio (SSMS) 並以 sa 或其他具有適當權限的帳戶登入。然後,創建兩個登入帳戶,一個為使用者A,一個為使用者B。以下是一個示例 T-SQL 命令:

sql
Copy code
CREATE LOGIN UserA WITH PASSWORD = 'YourPasswordA';
CREATE LOGIN UserB WITH PASSWORD = 'YourPasswordB';

2.創建資料庫使用者:
為了讓使用者A只能訪問資料庫A,您需要為使用者A創建一個資料庫使用者。同樣,這是一個示例 T-SQL 命令:

sql
Copy code
USE DatabaseA;
CREATE USER UserA FOR LOGIN UserA;
請確保將 "DatabaseA" 替換為您的實際資料庫名稱。

3.授予只讀權限:
現在,您需要授予使用者A只讀權限。您可以使用以下 T-SQL 命令來實現:

sql
USE DatabaseA;
ALTER ROLE db_datareader ADD MEMBER UserA;
這將讓使用者A成為 "db_datareader" 角色的成員,該角色具有對資料庫中所有表的只讀權限。

4.設定資料庫層級的權限:
確保使用者A無法訪問資料庫B,您可以在資料庫層級上配置權限。使用以下 T-SQL 命令:

sql
USE DatabaseB;
DENY CONNECT SQL TO UserA
這將禁止使用者A連接到資料庫B。

sam0407 iT邦大師 1 級 ‧ 2023-11-16 16:35:19 檢舉
如果我的回答對您有幫助,可否選我的回答為"最佳解答"?
我還差10個最佳解答就升級了,多多幫忙喔~~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
sam0407
iT邦大師 1 級 ‧ 2023-11-06 13:03:53

您的指令看起來是沒什麼問題,但我一般會直接用SSMS的GUI來操作

補個圖:
https://ithelp.ithome.com.tw/upload/images/20231106/20012665hIdZxyEaKl.pnghttps://ithelp.ithome.com.tw/upload/images/20231106/20012665sHKWVTljUh.png!
https://ithelp.ithome.com.tw/upload/images/20231106/20012665ZaSe2Mys6o.png

看更多先前的回應...收起先前的回應...
阿貴 iT邦新手 5 級 ‧ 2023-11-07 09:59:09 檢舉

Hi Sam

但這樣不論A或B登入SSMS,展開資料庫還是都會看到A、B資料庫
有辦法讓A登入只看到A資料庫,看不到B資料庫在列表上嗎?
感謝解惑

sam0407 iT邦大師 1 級 ‧ 2023-11-07 12:37:27 檢舉

會看的到其他資料庫是因為建立登入時預設會帶這個Public伺服器角色,而且還無法取消勾選...
https://ithelp.ithome.com.tw/upload/images/20231107/2001266500zlBltYaS.png

您可能需要去修改Public這個伺服器角色的權限才行

剛剛看了一下,應該是在這個地方改,由於我現在沒有測試的環境,只能截圖您自己試試看囉~把下圖裡授與的勾取消,並勾選拒絕,應該就OK了
https://ithelp.ithome.com.tw/upload/images/20231107/20012665mTxbmATaX1.png

阿貴 iT邦新手 5 級 ‧ 2023-11-07 13:49:10 檢舉

Hi Sam

經測試,依上面作法,不論A、B登入SSMS,都只能看到系統資料庫
A、B料庫無法顯示,必須把A使用者加入A資料庫的DB_owner,才能
達成讓A登入只看到A資料庫,看不到B資料庫,問題是變成A使用者
對A有刪除的權限,但需求是只能有唯讀的權限。
懇請再解惑,謝謝。

sam0407 iT邦大師 1 級 ‧ 2023-11-07 16:17:23 檢舉

不能給DB_owner角色,這角色權限太大,複習一下上面PO過的這張圖,給使用者db_datareader就好
https://ithelp.ithome.com.tw/upload/images/20231107/20012665eJRGvidiRq.png

阿貴 iT邦新手 5 級 ‧ 2023-11-13 08:51:38 檢舉

大家好
如果依上面作法,A使用者登入還是會看到B資料庫顯示在物件總管上面。
要如何設定才能在A使用者登入時只看到A資料庫,而看不到B資料庫呢?

sam0407 iT邦大師 1 級 ‧ 2023-11-13 11:30:06 檢舉

之前不是已經設好系統角色Public,不管A/B使用者都看不到A/B資料庫了嗎??

在設定使用者部份,請注意:
A使用者只要去設A資料庫的db_datareader,其他資料庫都不要去勾選

我要發表回答

立即登入回答