SQL用戶權限總結 - sql server 2012數據庫基礎-用戶管理及權限管理-實驗報告

這是大三第一學期《數據庫基礎》的實驗報告,總共15個實驗,前12個百度文庫都有,後面三個網上找不到都是我自己花了很多時間琢磨出來的,希望對大家,以及將來的我有所幫助!

主要是概念問題,先是進入數據庫所必須的登入用戶,然後每個登入用戶必須要有其下的數據庫用戶,每個數據庫用戶必須要有權限,權限具體內容由服務器角色提供。權限具體內容可以使用系統自帶的服務器角色,也可以自定義。

思路很繞,大概有點理解,就是那種層次結構的感覺。


全部總結鏈接

SQL基礎   (數據庫、表、數據的增刪改查、視圖相關,以及所有實驗報告源代碼)

遊標 (類似C++ 的 指針)

存儲過程(類似 C++ 的自定義函數)

觸發器 (類似 自定義的陷阱,或者說是監聽器,滿足某個條件了執行某個方法)

用戶權限及權限管理 (類似Windows的多用戶管理)

併發控制 (瞭解多個用戶同時對數據造成錯誤的情況 和 解決方法)

數據恢復(當數據庫數據丟失,相應的解決方法)

 


課程名稱   數據庫基礎            

實驗項目   實驗13 用戶管理及權限管理       

 

實驗要求

(1)以系統管理員身份完成如下實驗。

  •  建立3個不同名稱的註冊用戶.
  • 使用ALTER LOGIN命令對建立的註冊用戶用不同的修改.
  • 建立一個數據爲管理員用戶

(2)以數據爲管理員身份完成如下實驗。

  • 根據已有的註冊用戶建立幾個當前數據庫的用戶。
  • 使用ALTER USER命令修改部分用戶設置。
  • 建立若干角色,部分角色指定基他用戶管理。
  • 授權一些用戶可以創建表等數據庫對象。
  • 完成角色管理及其他授權管理

(3)以下實驗由若干學生一組共同完成。

  • 每個用戶有建立對像的權限,各自建立自已的對象(如表和視圖等)。
  • 各用戶之間就表或視圖的查詢、修改、刪除、插入等互相授權,在授權過程中體會GRANT命令中WITH GRANT OPTIN短語的作用。
  • 分情況收回授權,並體會REVOKE命令中GRANT OPTION FOR 和CASCADE短語的作用

(4)在實驗報告中要給出具體的操作要求和過程,並針對各種情況做出具體的分析和討論。


實驗過程

關於用戶權限的概念性問題和相關SQL代碼研究了好久,總共嘗試了三遍,每次做都有新的理解,下面爲最後一次的理解:

最重要的就是概念性問題,首先對其中的概念總結一下:

 

登入用戶在SQL server 2012啓動的時候需要登入的用戶,登入用戶必須要用數據庫用戶,否則無法登入。如下圖所示:

服務器角色書本154頁,相當於java中“類”的概念。可以使用系統預定義的,也可以自己創建自定義權限的角色。

數據庫角色書本155頁,相當於java中“對象”的概念。當一個數據庫角色和服務器角色“連接”起來,那麼這個數據庫角色就含有該服務器角色所擁有的權限。

 

需要用到的函數:

sp_addrole函數在書本156頁,用來創建新數據庫角色,參數前者爲數據庫角色名稱,後者爲只讀權限

sp_addrolemember函數在書本157頁,用來連接數據庫角色和數據庫用戶

 

題目1.1:建立3個不同名稱的註冊用戶

圖 1 創建三個用戶,屬性包括 用戶名密碼 以及默認登入的數據庫

這個時候創建的這三個用戶,還無法登入,因爲還沒有打開“學生管理系統”數據庫的權限,如果登入則顯示:

 

題目1.2:使用ALTER LOGIN命令對建立的註冊用戶用不同的修改

圖 2 分別修改三個用戶的 用戶名 和 密碼

注:此題主要展示一下修改用戶名和密碼的語法,實際上沒有修改,對後面過程沒有影響

 

題目1.3:建立一個數據爲管理員用戶

圖 3 把zwz01用戶設置爲sysadmin(書本154頁)管理員,可以做任何事情

但是這個管理員用戶下面沒有數據庫用戶,還是不能登入:

 

題目2.1:根據已有的註冊用戶建立幾個當前數據庫的用戶。

 

圖 4  分別創建 兩個 數據庫用戶
其中sp_addrole函數在書本156頁,用來創建新數據庫角色,參數前者爲數據庫角色名稱,後者爲只讀權限
代碼相當於使用系統的“只讀”類,創建兩個java對象,分別是zwz01和zwz02
這個zwz01和zwz02和登入用戶的zwz01無關,這裏重名了,以後有機會再改

 

題目2.2:使用ALTER USER命令修改部分用戶設置

圖 5   分別修改 兩個用戶 的 用戶名
注:只是展示語法,實際上沒有修改,對後面過程無影響

 

 

題目2.3:建立若干角色,部分角色指定基他用戶管理

圖 6建立兩個角色‘zwzdatabase1’、‘zwzdatabase2’,和數據庫用戶“連接”起來
 

 

題目2.4:授權一些用戶可以創建表等數據庫對象(創建表、視圖權限)

圖 7  授權zwz01可以創建表
注:主要是展示語法,具體例子在第三大題

 

題目2.5完成角色管理及其他授權管理

圖 8 紅框內是查看數據庫角色zwzdatabase1的用戶,即zwz01
下方授權代碼是授予zwz01用戶相關權限

第三大題:

在完成第三大題之前,我們先創建三張表格,用於授予權限

圖 9 創建三張表格

圖 10 創建三個登入用戶 分別是user01~03
此時還沒和數據庫角色連起來  是虛的

 

 

題目3.1:每個用戶有建立對像的權限,各自建立自已的對象(如表和視圖等)。

圖 11   自定義一個數據庫角色user 然後實例化給user01、02、03,即連接起來
分別賦予 各個用戶 增刪改查 自己表的權限
比如 user01表可以增刪改查user01table 以此類推

 

題目3.2:各用戶之間就表或視圖的查詢、修改、刪除、插入等互相授權,在授權過程中體會GRANT命令中WITH GRANT OPTIN短語的作用。

 

第一步:首先我們退出SQL server,改用user01的賬號登入 ,執行以下代碼:

圖 12 第一行代碼爲在自己的表中插入一行數據
第二行代碼爲查找自己表的全部信息,已經輸出
第三行爲把自己表的 增刪改查 權限授權給 user02

 

第二步:然後我們再退出SQL server,改用user02的賬號登入 ,執行以下代碼:

 

首先查詢user01table,因爲user01已經賦予其權限,所以可以查到:

 

再查詢user02table,因爲這本來就是自己的表,所以也可以查詢:

最後查詢user03table,因爲沒有權限,無法訪問

 

 

 

題目3.3:分情況收回授權,並體會REVOKE命令中GRANT OPTION FOR 和CASCADE短語的作用

 

我們先切換爲user01的賬號,執行以下代碼:

即刪除對user02的授權

然後再切換到user02的賬號,查詢表1,無法查詢

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章