本篇文章僅用於檢查主體所擁有的許可權。我們可以按照 例項->資料庫->資料庫物件 逐一檢查。
--例項級別
select
*from sys.server_principals --
伺服器主體
select
*from sys.server_role_members --
伺服器角色成員
select
*from sys.server_permissions --
許可權分配
--資料庫級別
select
*from sys.database_principals --
資料庫主體
select
*from sys.database_role_members --
資料庫角色成員
select
*from sys.database_permissions --
許可權分配
綜合上面各系統檢視
/*************檢查許可權步驟************
*/--
step1 伺服器角色中的登入名
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
and u.name not
in(select name from master.sys.sql_logins where is_disabled=1)
order
by1,2
--step2 資料庫角色中的使用者
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
by1,2
--step3 伺服器安全主體許可權
select
spc.name toobject
,spc.type_desc
,spm.class_desc
,spm.permission_name
,spm.state_desc
,spc1.name onobject
from
sys.server_permissions spm
inner
join
sys.server_principals spc
on spm.grantee_principal_id =
spc.principal_id
left
join
sys.server_principals spc1
on spm.major_id =
spc1.principal_id
where spc.principal_id>
265--
排除部分登入名
--step4 資料庫安全主體許可權
select
dpc.name granteename
,object_name(dpm.major_id ,db_id()) as
objectname
,col_name(dpm.major_id ,dpm.minor_id) as
columnname
,dpm.class_desc
,dpm.permission_name
,dpm.state_desc
from
sys.database_permissions (nolock) dpm
inner
join
sys.database_principals (nolock) dpc
on dpm.grantee_principal_id =
dpc.principal_id
where dpm.grantee_principal_id >=5--
排除public、dbo、guest、information_schema、sys
--and dpc.type='s' --r角色、s使用者
order
bydpc.type,dpc.name,objectname
--step5 檢視角色(使用者)被賦予的許可權(資料庫下)
exec sp_helprotect @username='
dbamonitor_etl_v1'--
username|dbrolename
exec sp_helprotect @name='
info_cpu_uselog'--
tablename
我們可以針對哪些permission_name進行grant/revoke/deny
--羅列所有內建permissions
select
*from sys.fn_builtin_permissions(default
)order
byclass_desc,permission_name;
--羅列能在object上設定的permissions
select
*from sys.fn_builtin_permissions('
object')
order
by class_desc,permission_name;
上面羅列的permission_name,都可以在例項、資料庫、資料庫物件右擊屬性的許可權或安全物件頁找到。
資料庫許可權
物件許可權 select 對錶,同義詞,檢視資料查詢許可權 update 對錶,同義詞,檢視資料修改許可權 delete 對錶,檢視資料刪除許可權 insert 對錶,檢視資料插入許可權 execute 執行儲存過程和函式許可權 recevie 從對列中檢索訊息的許可權 view defintion...
資料庫許可權
ora 01031 許可權不足?建立使用者後,我們需要給使用者分配角色,connect角色是必需的否則,使用者都無法登陸了,其次有個地方需要注意,不要以為你給了使用者dba角色許可權就可以 為所欲為 了。雖然分配了許可權,如果後面你不給使用者分配查詢許可權,你很可能會出現下面這種情況,其實原因的想很...
資料庫角色許可權
use database goexec sp addlogin name 新增登入 exec sp grantdbaccess n name exec sp addrolemember n db owner n name 新增db owner許可權 go 刪除測試使用者 exec sp revoke...