數據庫架構、角色、用戶、權限集合
1、如果在刪除用戶的時候出現無法刪除用戶,此用戶擁有架構。那麼是因爲當前這個用戶隸屬於某個架構,我們在創建用戶的時候默認隸屬於dbo架構的,如果你指定了非dbo架構那麼就必須解除架構的綁定才能刪除這個用戶,隸屬於dbo架構除外。 2、我們在軟件或者系統開發的過程中,可能有很多的人對數據庫進行操作,難免會出現某個人對數據的誤操作,那麼怎麼避免這種情況呢? 通過創建指定的用戶,然後給於用戶指定角色並對角色賦予相應的權限即可避免其他的誤操作。 a、創建角色 Create Role TestRole b、給予角色賦予相應的權限 Grant create table,create procedure,create view to TestRole--創建表 視圖 存儲過程的權限 Grant Select,insert,execute,alter to TestRole--查詢,添加,執行存儲過程,修改存儲過程、視圖、表 c、創建登陸 Create Login TestLogin with password='123456' d、創建用戶 Create User TestUser for Login TestLogin --一般我們設置登錄名和用戶名一致,這裏爲了區分,不一致 e、添加用戶到角色中 exec sp_addrolemember 'TestRole','TestUser' 至此用戶創建結束,我們打開SSMS,在登錄名輸入TestUser,密碼爲123456即可進入到管理界面 在查詢分析器執行Update Table set ceshi='1' 會出現什麼錯誤呢? 消息 229,級別 14,狀態 5,第 1 行 因爲我們沒有給予這個用戶update的權限,只給了select 、insert 、execute 、alter 當然權限還有很多,比如賦予角色的執行評估計劃的權限 Grant showplan to TestRole 3、關於架構和用戶 我記得有個網友對架構和用戶的關係有個很好的比喻:數據庫中有表、存儲過程、視圖、觸發器等很多的對象,就像一個網站中有網頁、腳本、文件夾等對象一樣,暫稱之爲網站對象。我們都知道網站中的對象我們都是很有條理的放在不同的文件夾下面,所以數據庫對象也不能都放在一堆。那麼相對於網站的對象數據庫對象的架構是什麼意思呢?很明顯就是文件夾了。 那是不是架構和文件夾完全相同呢?答案是:不是。文件夾可以多次嵌套,架構卻不可以。一個對象只能屬於一個架構,就像一個文件只能存放於一個文件夾。 我們訪問一個數據庫對象應該是:"架構名。對象名" 列出數據所有的架構 select sys.objects.name,sys.schemas.name 架構-用戶:一對多的關係 架構-角色:多對多的關係 a.一個架構中不能包含相同名稱的對象,相同名稱的對象可以在不同的架構中存在。
b.一個架構只能有一個所有者,所有者可以是用戶, 數據庫角色, 應用程序角色。 c.一個用數據庫角色可以可以擁有一個默認架構,和多個架構。 d.多個數據庫用戶可以共享單個默認架構。 e.由於架構與用戶獨立,刪除用戶不會刪除架構中的對象。 |