❶ sql Server用戶許可權問題
創建角色,用戶,許可權/*--示例說明 示例在資料庫pubs中創建一個擁有表jobs的所有許可權、擁有表titles的SELECT許可權的角色r_test 隨後創建了一個登錄l_test,然後在資料庫pubs中為登錄l_test創建了用戶賬戶u_test 同時將用戶賬戶u_test添加到角色r_test中,使其通過許可權繼承獲取了與角色r_test一樣的許可權 最後使用DENY語句拒絕了用戶賬戶u_test對表titles的SELECT許可權。 經過這樣的處理,使用l_test登錄SQL Server實例後,它只具有表jobs的所有許可權。--*/USE pubs--創建角色 r_testEXEC sp_addrole 'r_test'--授予 r_test 對 jobs 表的所有許可權GRANT ALL ON jobs TO r_test--授予角色 r_test 對 titles 表的 SELECT 許可權GRANT SELECT ON titles TO r_test--添加登錄 l_test,設置密碼為pwd,默認資料庫為pubsEXEC sp_addlogin 'l_test','pwd','pubs'--為登錄 l_test 在資料庫 pubs 中添加安全賬戶 u_testEXEC sp_grantdbaccess 'l_test','u_test'--添加 u_test 為角色 r_test 的成員EXEC sp_addrolemember 'r_test','u_test'--拒絕安全賬戶 u_test 對 titles 表的 SELECT 許可權DENY SELECT ON titles TO u_test/*--完成上述步驟後,用 l_test 登錄,可以對jobs表進行所有操作,但無法對titles表查詢,雖然角色 r_test 有titles表的select許可權,但已經在安全賬戶中明確拒絕了對titles的select許可權,所以l_test無titles表的select許可權--*/--從資料庫 pubs 中刪除安全賬戶EXEC sp_revokedbaccess 'u_test'--刪除登錄 l_testEXEC sp_droplogin 'l_test'--刪除角色 r_testEXEC sp_droprole 'r_test'
❷ sql中如何用什麼語句給用戶授權
sql語言用grant語句向用戶授予操作許可權,grant語句的一般格式為:
grant
<許可權>[,<許可權>]...
[on
<對象類型>
<對象名>]
to
<用戶>[,<用戶>]...
[with
grant
option];
其語義為:將對指定操作對象的指定操作許可權授予指定的用戶。
不同類型的操作對象有不同的操作許可權,常見的操作許可權如表3-4所示。
表3-4
不同對象類型允許的操作許可權
對象
對象類型
操作許可權
屬性列
table
select,
insert,
update,
delete
all
privieges
視圖
table
select,
insert,
update,
delete
all
privieges
基本表
table
select,
insert,
update,
alter,
index,delete
all
privieges
資料庫
database
createtab
詳細信息…
接受許可權的用戶可以是一個或多個具體用戶,也可以是public即全體用戶。
如果指定了with
grant
option子句,則獲得某種許可權的用戶還可以把這種許可權再授予別的用戶。如果沒有指定with
grant
option子句,則獲得某種許可權的用戶只能使用該許可權,但不能傳播該許可權。
例1
把查詢student表許可權授給用戶u1
grant
select
on
table
student
to
u1;
例2
把對student表和course表的全部許可權授予用戶u2和u3
grant
all
priviliges
on
table
student,
course
to
u2,
u3;
例3
把對表sc的查詢許可權授予所有用戶
grant
select
on
table
sc
to
public;
例4
把查詢student表和修改學生學號的許可權授給用戶u4
詳細信息…
這里實際上要授予u4用戶的是對基本表student的select許可權和對屬性列sno的update許可權。授予關於屬性列的許可權時必須明確指出相應屬性列名。完成本授權操作的sql語句為:
grant
update(sno),
select
on
table
student
to
u4;
例5
把對表sc的insert許可權授予u5用戶,並允許他再將此許可權授予其他用戶
grant
insert
on
table
sc
to
u5
with
grant
option;
詳細信息…
執行此sql語句後,u5不僅擁有了對表sc的insert許可權,還可以傳播此許可權,即由u5用戶發上述grant命令給其他用戶。
例如u5可以將此許可權授予u6:
grant
insert
on
table
sc
to
u6
with
grant
option;
同樣,u6還可以將此許可權授予u7:
grant
insert
on
table
sc
to
u7;
因為u6未給u7傳播的許可權,因此u7不能再傳播此許可權。
例6
dba把在資料庫s_c中建立表的許可權授予用戶u8
grant
createtab
on
database
s_c
to
u8;