sqlserver可以通過設(shè)置表權(quán)限來限制用戶訪問:
10年專注成都網(wǎng)站制作,成都定制網(wǎng)站,個人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設(shè)計流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),專注于成都定制網(wǎng)站,高端網(wǎng)頁制作,對圍欄護欄等多個行業(yè),擁有多年的營銷推廣經(jīng)驗。
在Management Studio中的表上右鍵選屬性(Properties),左邊選權(quán)限(Permissions),右邊中間添加和選中某個User或Role,下面選中或移除某個權(quán)限。同樣你可用標準的賦權(quán)語句來實現(xiàn):如
grant/revoke select on 表名 to 用戶名。
-- sqlserver:一、操作步驟
1.
首先進入數(shù)據(jù)庫級別的【安全性】-【登錄名】-【新建登錄名】
(圖1:新建登錄名)
2.
在【常規(guī)】選項卡中,如下圖所示,創(chuàng)建登陸名,并設(shè)置默認的數(shù)據(jù)庫。
(圖2:設(shè)置選項)
3.
在【用戶映射】選項卡中,如下圖所示,勾選需要設(shè)置的數(shù)據(jù)庫,并設(shè)置【架構(gòu)】,點擊【確認】按鈕,完成創(chuàng)建用戶的操作
(圖3:選擇對應(yīng)數(shù)據(jù)庫)
4.
現(xiàn)在我們就可以對testlog數(shù)據(jù)庫中的user表進行權(quán)限的設(shè)置了,【表】-【
屬性】
(圖4:選擇對應(yīng)表)
5.
在【權(quán)限】選項卡中,如下圖所示,依此點擊【添加】-【瀏覽】-【選擇對象】
(圖5:設(shè)置訪問表的用戶)
6.
在上面點擊【確認】后,我們就可以下面的列表中找到對應(yīng)的權(quán)限,如果你還想細化到列的權(quán)限的話,右下角還有一個【列權(quán)限】的按鈕可以進行設(shè)置,點擊【確認】按鈕就完成了這些權(quán)限的設(shè)置了
(圖6:權(quán)限列表)
7.
現(xiàn)在就使用testuser用戶登陸數(shù)據(jù)庫了,登陸后如下圖所示,現(xiàn)在只能看到一個表了
(圖7:效果)
二、注意事項
1.
在上面的第3步驟中需要注意:如果這里沒有選擇對應(yīng)的數(shù)據(jù)庫的話,之后去testlog數(shù)據(jù)庫中是找不到testuser。
(圖8:找不到testuser用戶)
2.
在上面的第3步驟,設(shè)置完testlog數(shù)據(jù)后,需要點擊【確認】按鈕,完成創(chuàng)建用戶操作,如果這個時候去設(shè)置【安全對象】,是無法在【添加】-【特定對象】-【對象類型】-【登陸名】-【瀏覽】中找到剛剛新建的testuser用戶的。
3.
其實在數(shù)據(jù)庫級別的【安全性】創(chuàng)建的用戶是屬于全局的,當設(shè)置了某個數(shù)據(jù)庫,比如testlog之后,這個用戶就會出現(xiàn)在這個數(shù)據(jù)庫的【安全性】列表中。
如果刪除testlog這個用戶,會出現(xiàn)下面的提示。刪除了后,這個用戶就無法登陸了。需要去對應(yīng)的數(shù)據(jù)庫中刪除用戶,如果沒有刪除又創(chuàng)建,是會報錯的。
(圖9:刪除testuser用戶)
4.
在第6步的【顯式權(quán)限】列表中,如果選擇了【control】這個選項,那么在【select】中設(shè)置查詢【列權(quán)限】就沒有意義了,查詢就不會受限制了。如果設(shè)置【列權(quán)限】,在正常情況下會顯示下圖的報錯信息:
(圖10:效果)
5.
在testlog數(shù)據(jù)庫的【安全性】-【testuser】-【屬性】-【安全對象】-【添加】-【對象類型】這里有更多關(guān)于數(shù)據(jù)庫級別的一些對象類型可以設(shè)置。
(圖11:其它對象類型)
創(chuàng)建好用戶后,幾個需要賦權(quán)限的地方,寫出來以備后用。
1.在安全性用戶屬性中,登錄用戶的服務(wù)器角色為public
2.
用戶映射到數(shù)據(jù)的數(shù)據(jù)庫角色成員身份為:db_owner和public,默認架構(gòu)為dbo
3.
狀態(tài)為允許連接到數(shù)據(jù)引擎和登錄
在允許訪問的數(shù)據(jù)庫屬性權(quán)限中,創(chuàng)建用戶權(quán)限
1.加上讀取、更新、刪除,
2.加上控制和連接復(fù)制這兩個,用戶可以在sql
server管理界面中直接連接,
3.加上更改任意架構(gòu),用戶可以修改表結(jié)構(gòu)
把其他的權(quán)限設(shè)為拒絕,這樣他就只有讀取、更新、刪除,及修改表結(jié)構(gòu)的權(quán)限
方法一、由Management
Studio中的表上右鍵選屬性(Properties),左邊選權(quán)限(Permissions),右邊中間添加和選中某個User或Role,下面選中或移除某個權(quán)限。
方法二、語句
:
Grant
權(quán)限
On
table
表名
To
用戶名
1. 查看 SQL 2005 用戶所屬數(shù)據(jù)庫角色
use yourdb
go
select DbRole = g.name, MemberName = u.name, MemberSID = u.sid
from sys.database_principals u, sys.database_principals g, sys.database_role_members m
where g.principal_id = m.role_principal_id
and u.principal_id = m.member_principal_id
order by 1, 2
go
2. 查看 SQL 2005 登陸帳戶所屬服務(wù)器角色
use master
go
select SrvRole = g.name, MemberName = u.name, MemberSID = u.sid
from sys.server_principals u, sys.server_principals g, sys.server_role_members m
where g.principal_id = m.role_principal_id
and u.principal_id = m.member_principal_id
order by 1, 2
go
3. 查看 SQL 2005 用戶被賦予的權(quán)限
use yourdb
go
exec sp_helprotect @username = 'user name'
go
1、為角色賦予jobs表的所有權(quán)限
GRANT ALL ON jobs TO newrole
2、為角色賦予sales表的查、改權(quán)限
GRANT SELECT,UPDATE ON sales TO newrole
臨時表可以被任何用戶在任何數(shù)據(jù)庫下創(chuàng)建,而不需要授予任何權(quán)限。
本地臨時表只能被創(chuàng)建它的會話訪問。全局臨時表可以被所有會話訪問和修改,而不需要授權(quán)。