SQL資料庫的角色的定義,分類及角色的許可權分配操作

2021-05-22 01:37:01 字數 3505 閱讀 6276

角色是乙個強大的工具,使您得以將使用者集中到乙個單元中,然後對該單元應用許可權。對乙個角色授予、拒絕或廢除的許可權也適用於該角色的任何成員。可以建立乙個角色來代表單位中一類工作人員所執行的工作,然後給這個角色授予適當的許可權。當工作人員開始工作時,只須將他們新增為該角色成員,當他們離開工作時,將他們從該角色中刪除。而不必在每個人接受或離開工作時,反覆授予、拒絕和廢除其許可權。許可權在使用者成為角色成員時自動生效。

microsoft? windows nt? 和 windows? 2000 組的使用方式與角色很相似。有關更多資訊,請參見組。

如果根據工作職能定義了一系列角色,並給每個角色指派了適合這項工作的許可權,則很容易在資料庫中管理這些許可權。之後,不用管理各個使用者的許可權,而只須在角色之間移動使用者即可。如果工作職能發生改變,則只須更改一次角色的許可權,並使更改自動應用於角色的所有成員,操作比較容易。

在 microsoft? sql server? 2000 和 sql server 7.0 版中,使用者可屬於多個角色。

以下指令碼說明登入、使用者和角色的新增,並為角色授予許可權。

use master

go sp_grantlogin 'netdomain/john'

go sp_defaultdb 'netdomain/john', 'courses'

go sp_grantlogin 'netdomain/sarah'

go sp_defaultdb 'netdomain/sarah', 'courses'

go sp_grantlogin 'netdomain/betty'

go sp_defaultdb 'netdomain/betty', 'courses'

go sp_grantlogin 'netdomain/ralph'

go sp_defaultdb 'netdomain/ralph', 'courses'

go sp_grantlogin 'netdomain/diane'

go sp_defaultdb 'netdomain/diane', 'courses'

go use courses

go sp_grantdbaccess 'netdomain/john'

go sp_grantdbaccess 'netdomain/sarah'

go sp_grantdbaccess 'netdomain/betty'

go sp_grantdbaccess 'netdomain/ralph'

go sp_grantdbaccess 'netdomain/diane'

go sp_addrole 'professor'

go sp_addrole 'student'

go sp_addrolemember 'professor', 'netdomain/john'

go sp_addrolemember 'professor', 'netdomain/sarah'

go sp_addrolemember 'professor', 'netdomain/diane'

go sp_addrolemember 'student', 'netdomain/betty'

go sp_addrolemember 'student', 'netdomain/ralph'

go sp_addrolemember 'student', 'netdomain/diane'

go grant select on studentgradeview to student

go grant select, update on professorgradeview to professor

go 該指令碼給 john 和 sarah 教授提供了更新學生成績的許可權,而學生 betty 和 ralph 只能選擇他們自己的成績。diane 因同時教兩個班,所以新增到兩個角色中。professorgradeview 檢視應將教授限制在自己班學生的行上,而 studentgradeview 應限制學生只能選擇自己的成績。

sql server 2000 和 sql server 7.0 版在安裝過程中定義幾個固定角色。可以在這些角色中新增使用者以獲得相關的管理許可權。下面是伺服器範圍內的角色。

固定伺服器角色

描述 sysadmin

可以在 sql server 中執行任何活動。

serveradmin

可以設定伺服器範圍的配置選項,關閉伺服器。

setupadmin

可以管理鏈結伺服器和啟動過程。

securityadmin

可以管理登入和 create database 許可權,還可以讀取錯誤日誌和更改密碼。

processadmin

可以管理在 sql server 中執行的程序。

dbcreator

可以建立、更改和除去資料庫。

diskadmin

可以管理磁碟檔案。

bulkadmin

可以執行 bulk insert 語句。

可以從 sp_helpsrvrole 獲得固定伺服器角色的列表,可以從 sp_srvrolepermission 獲得每個角色的特定許可權。

每個資料庫都有一系列固定資料庫角色。雖然每個資料庫中都存在名稱相同的角色,但各個角色的作用域只是在特定的資料庫內。例如,如果 database1 和 database2 中都有叫 userx 的使用者 id,將 database1 中的 userx 新增到 database1 的 db_owner 固定資料庫角色中,對 database2 中的 userx 是否是 database2 的 db_owner 角色成員沒有任何影響。

固定資料庫角色

描述 db_owner

在資料庫中有全部許可權。

db_accessadmin

可以新增或刪除使用者 id。

db_securityadmin

可以管理全部許可權、物件所有權、角色和角色成員資格。

db_ddladmin

可以發出 all ddl,但不能發出 grant、revoke 或 deny 語句。

db_backupoperator

可以發出 dbcc、checkpoint 和 backup 語句。

db_datareader

可以選擇資料庫內任何使用者表中的所有資料。

db_datawriter

可以更改資料庫內任何使用者表中的所有資料。

db_denydatareader

不能選擇資料庫內任何使用者表中的任何資料。

db_denydatawriter

不能更改資料庫內任何使用者表中的任何資料。

可以從 sp_helpdbfixedrole 獲得固定資料庫角色的列表,可以從 sp_dbfixedrolepermission 獲得每個角色的特定許可權。

資料庫中的每個使用者都屬於 public 資料庫角色。如果想讓資料庫中的每個使用者都能有某個特定的許可權,則將該許可權指派給 public 角色。如果沒有給使用者專門授予對某個物件的許可權,他們就使用指派給 public 角色的許可權。

SQL 資料庫角色

例11 通過角色來實現將一組許可權授予衣蛾使用者。步驟如下 1 首先建立乙個角色 r1 create role r1 2 然後使用grant語句,使角色r1擁有student表的select update insert許可權。grant select,update,insert on table s...

資料庫SQL語句的分類

資料庫的語句可以分為以下四類 1 ddl data define language 定義資料 create drop alter 修改 truncate 截斷 例子含義 create create database 庫名 charset utf8 建立新的資料庫 drop drop database...

資料庫分類 SQL資料庫 NoSQL資料庫

一 資料庫產品 二.sql資料庫 sql 是所有關係型資料庫的公共語言 關係型資料庫,是建立在關係模型基礎上的資料庫,借助於集合代數等數學概念和方法來處理資料庫中的資料,我們平常使用的資料庫,像mysql,oracle,sql server等都是傳統的關係型資料庫。關係模型指的就是二維 模型,而乙個...