限制使用者只能執行某個儲存過程

2021-08-09 08:19:20 字數 1922 閱讀 7332

--總的思路就是限制對方只能執行這個儲存過程,其它的操作都做不了

--以 test 為例,你自己要將 test 全部替換成你自己的庫

------ 這一部分是在測試庫加測試表和測試的儲存過程 begin ---------

use test

goif object_id('thetable') is not null drop table thetable

gocreate table thetable( id int primary key identity(1,1),[name] nvarchar(20) )

insert into thetable values (n'小明')

goif object_id('proc_test') is not null drop proc proc_test

gocreate proc proc_test

asbegin

select * from thetable as t

endgo

exec proc_test

go------ 這一部分是在測試庫加測試表和測試的儲存過程 end ---------

use [master]

goif exists(select * from sys.syslogins as s where s.name='onlyproc')

drop login [onlyproc]

gocreate login [onlyproc] with password=n'onlyproc123!', default_database=[test], check_expiration=off, check_policy=off

gouse [test]

goif exists(select 1 from sys.database_principals where name='onlyproc' and type_desc='sql_user')

drop user [onlyproc]

go

create user [onlyproc] for login [onlyproc]

gogrant exec on object::dbo.proc_test to [onlyproc]

go------------------- 以下部分是以 onlyproc 賬號登入之後再執行的情況 --------------------

use test

goexec proc_test

/*id name

----------- --------------------

1 小明

(1 行受影響)

*/select * from thetable

/*訊息 229,級別 14,狀態 5,第 1 行

拒絕了對物件 'thetable' (資料庫 'test',架構 'dbo')的 select 許可權。

*/delete from thetable

/*訊息 229,級別 14,狀態 5,第 1 行

拒絕了對物件 'thetable' (資料庫 'test',架構 'dbo')的 delete 許可權。

*/truncate table thetable

/*訊息 1088,級別 16,狀態 7,第 1 行

找不到物件 "thetable",因為它不存在或者您沒有所需的許可權。

*/go

alter proc proc_test

asbegin

truncate table thetable

endgo

/*訊息 3701,級別 14,狀態 20,過程 proc_test,第 4 行

無法對 過程 'proc_test' 執行 更改,因為它不存在,或者您沒有所需的許可權。

*/

mysql 儲存過程模擬給某個使用者傳送郵件

drop table if exists user info drop table if exists email info 使用者表 create table user info id int notnull auto increment primary key,name varchar 30 e...

執行儲存過程

sql server 2012 其他版本 3 共 3 對本文的評價是有幫助 評價此主題 本主題介紹如何使用 sql server management studio 或 transact sql 在 sql server 2012 中執行儲存過程。有兩種不同方法執行儲存過程。第一種方法和最常見的方法...

CENTOS限制FTP使用者只能訪問自己的目錄

首先給使用者指定目錄 useradd d opt reconciliation s sbin nologin g ftpgroup g root ftpuser 如果是編輯使用者的ftp目錄則用 usermod d path to ftp ftpuser 然後修改 vi etc vsftpd.con...