术之多
2022-10-15 原文
SQL Server数据库有完善的权限管理机制,对于存储过程,其权限分为查看定义,执行和修改,查看SP定义的权限是:VIEW DEFINITION ,执行存储过程的权限是:EXECUTE,修改SP的权限是:ALTER,但是该权限也能修改表结构,视图的定义等数据库对象。数据的读取权限是SELECT,这个查看定义是不同的权限。对于一个数据表,如果仅授予VIEW DEFINITION权限,而没有授予SELECT权限,那么用户只能查看数据表的结构(Schema),而无法查看表中存储的数据。
在管理权限时,可以给特定的用户授予“只能读取数据和执行SP,而不能修改数据”的权限,也就是,使特定的用户只能查看数据(只读,SELECT),只能查看定义(VIEW DEFINITION),和执行SP的权限(EXECUTE),这样的权限设置,既能使用户查看到业务数据,又能避免用户私自修改数据。
对于数据的读取权限,SQL Server内置固定数据库角色 db_datareader,把用户添加到该角色中,用户就被授予了对数据库中所有数据(表或视图)的读取权限,就是说,用户可以对数据表或视图执行select命令读取数据;也可以逆向思考,不允许用户修改数据,把用户添加到固定数据库角色 db_denydatawriter 中,这样,用户不能添加,更新和删除任何数据,就是说,不能对任何数据表执行insert,updae和delete命令。这两个数据库角色,相当于以下两个命令:
grant select to [domain\user];
deny update,delete,insert to [domain\user];
权限的分配分为:授予(grant)和拒绝(deny),对于已分配的权限,也可以通过回收(revoke)命令收回,权限管理是个技术活。
一,授予查看定义的权限
查看数据库对象的权限是VIEW DEFINITION,通常数据库对象是指:数据表,视图,存储过程,函数等,被授予VIEW DEFINITION权限之后,用户只能查看定义,而无法从数据表或视图中查看数据,无法执行SP和函数等。
1,授予SQL Server实例级别的查看定义的权限
以下代码用于授予权限VIEW ANY DEFINITION,代码必须在master数据库中执行,使指定的用户能够查看当前SQL Server实例中的所有数据库对象的定义:
use master
go
grant view any definition to [domain\user]
2,授予User,只能查看当前数据库对象的定义的权限
以下代码用于授予VIEW DEFINITION,使指定的用户能够查看指定数据库中的所有对象的定义:
use db_name
go
grant view definition to [domain\user]
3,授予User,只能查看当前数据库的指定数据库对象的定义的权限
以下代码用于授予VIEW DEFINITION,通过on子句,使指定的用户能够查看指定对象的定义:
use db_name
go
grant view definition
on object::schema_nameobject_name
to [domain\user]
二,授予执行存储过程的权限
以下代码授予用户执行存储过程的权限,通过on子句指定用户只能执行特定的SP:
use db_name
go
grant execute
on object::schema_nameobject_name
to [domain\user]
如果grant execute省略on子句,表示所有的SP,这样,用户可以执行数据库中的所有SP:
use db_name
go
grant execute
to [domain\user]
三,授予用户修改存储过程的权限
修改存储过程的权限是ALTER,但是,ALTER同时也能修改表结构,视图定义等数据库对象,如下代码所示:
GRANT ALTER TO [domain\user]
如果仅授予用户修改SP的权限,那么必须逐个设置,或者把SP创建在独立的schema下,通过授予用户修改schema,达到控制用户只修改SP的目的:
GRANT ALTER
ON SCHEMA::proc_schema
TO [domain\user]
四,授予用户查看SP的定义,执行和修改SP的权限
通过GRANT子句,可以一次性把查看SP的定义,执行和修改SP的权限都授予指定的用户:
GRANT ALTER, EXECUTE, VIEW DEFINITION
ON SCHEMA::[proc_schema]
TO [domain\user]
在GRANT子句中省略ON子句,表示授予用户的权限作用于所有的数据库对象,包括数据表,视图,存储过程,函数等。
五,授予Public用户查看定义的权限
当Login没有映射到相应的User时,该Login被映射到默认的Public,设置给用户查看定义的权限,这样,每个登陆到SQL Server实例的用户,都可以查看定义。
use master
go
grant view any definition to public
use dbn_ame
go
grant view definition to public
六,授予用户查看定义,只读数据和执行SP的权限
存储过程 sp_msforeachdb @command 是微软未公开的存储过程,该存储过程遍历当前的SQL Server实例的所有数据库,在每个数据库中执行相同的命令:
use master
go
create login [domain\user]
from windows;
go
grant view any definition
to [domain\user] ;
go
exec sp_msforeachdb
'
use [];
if not exists
(
select
from sysdatabase_principals
where name=''domain\user''
)
create user [domain\user]
for login [domain\user];
alter role db_datareader
add member [domain\user];
grant execute to [domain\user];
'
go
遍历数据库的功能,也可以使用游标来实现,本文不再赘述。
参考文档:
Run same command on all SQL Server databases without cursors
Granting View Definition Permission to a User or Role in SQL Server
Security4:授予查看定义,执行SP和只读数据的权限的更多相关文章
MySQL能否授予查看存储过程定义权限给用户
在其他RDBMS中,可以将查看某个存储过程(PROCEDURE)定义的权限给某个用户,例如在SQL Server中,可以单独将查看ProcedureName定义的权限授予UserA GRANT VIE
查看ORACLE执行计划的几种常用方法
SQL的执行计划实际代表了目标SQL在Oracle数据库内部的具体执行步骤,作为调优,只有知道了优化器选择的执行计划是否为当前情形下最优的执行计划,才能够知道下一步往什么方向 执行计划的定义:执行目
查看Job执行的历史记录
SQL Server将Job的信息存放在msdb中,Schema是dbo,表名以“sysjob”开头 一,基础表 1, 查看Job和Step,Step_ID 是从1 开始的 select jjo
查看Oracle执行计划
1PL/SQL解释计划窗口 优点:方面 缺点:看到信息有限 2explain_plan for 针对某个句子优化较方便 3sqlplus Sqlplus里输入命令: set autotrace
如何查看MySQL执行计划
在介绍怎么查看MySQL执行计划前,我们先来看个后面会提到的名词解释: 覆盖索引: MySQL可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件 包含所有满足查询需要的数据的索引
查看SQL执行计划
一用户进入某界面慢得要死,查看SQL执行计划如下(具体SQL语句就不完全公布了,截断的如下): call count cpu elapsed disk
MSSQL优化之——查看语句执行情况
MSSQL优化之——查看语句执行情况 在写SQL语句时,必须知道语句的执行情况才能对此作出优化了解SQL语句的执行情况是每个写程序的人必不可少缺的能力下面是对查询语句执行情况的方法介绍 一设置
查看Oracle执行计划的几种方法
查看Oracle执行计划的几种方法 一通过PL/SQL Dev工具 1直接File->New->Explain Plan Window,在窗口中执行sql可以查看计划结果其中,Cos
查看Mysql执行计划
使用navicat查看mysql执行计划: 打开profile分析工具: 查看是否生效:show variable like ‘%profil%’; 查看进程:show processlist; 选择
随机推荐
从零自学Java-1编写第一个Java程序
编写第一个Java程序 完成工作:1在文本编辑器中输入一个Java程序 2使用括号组织程序 3保存编译和运行程序 package comJsample;//将程序的包名称命名为com
JSP 过滤器
JSP教程 - JSP过滤器 JSP过滤器是可用于拦截来自客户端的请求或处理来自服务器的响应的Java类 过滤器可用于执行验证,加密,日志记录,审核 我们可以将过滤器映射到应用程序部署描述符文件w
ASPNET动态引用样式表(css)和脚本(js)文件
// 引入js文件 HtmlGenericControl scriptControl = new HtmlGenericControl("script"); scriptContr
mySQL 约束 (Constraints)
约束用于限制加入表的数据的类型: 1创建表时规定约束(通过 CREATE TABLE 语句) 2表创建之后也可以(通过 ALTER TABLE 语句) 约束类型: NOT NULL(非空) UN
直播内容不合规怎么办?智能AI为您解决审核难题
背景 近些年来,视频直播快速发展,大量的直播平台如雨后春笋一般出现,但是这同样给直播内容的监管带来了巨大的挑战,一方面国家对于直播内容监管的要求日益严格,另一方面相对于文字内容的审核,多媒体内容的审核
selenium - pycharm三种案例运行模式
1unittest 运行单个用例 (1)将鼠标放到对应的用例,右键运行即可 2unittest运行整个脚本案例 将鼠标放到if __name__ == "__main__":
dns服务器测试工具
下载地址:>
适用光纤 SMF, MMF, DSF, NZDSF, BIF/UBIF(弯曲不敏感光纤) 光纤切割长度 250 um 光纤:5 – 10 mm, 900um紧套光纤:10 -16 mm 包层直径 80 -150um 涂覆层直径 160 - 900um 典型熔接损耗
( 同种光纤) 单模光纤002dB , 多模光纤001dB
NZDS光纤003dB, EZ-Bend光纤004dB 熔接程序 150种 自动光纤选择功能 SM: SMF, DSF, NZDSF, BIF/UBIF(弯曲不敏感光纤)
MM: MMF 电极使用寿命 5000次 加热程序 18种 自动加热开始功能 具有自动开始加热功能 尺寸 127W x 199D x 105H mm (不包括防震橡胶垫)
159W x 231D x 130 H mm (包括防震橡胶垫) 光纤夹具 固定通用夹具 (可选配松套管光纤)
或 专用光纤夹具 重量 19 kg (不带电池), 23kg (带电池) 熔接时间 7 秒(快速熔接),9 秒 (标准程序) 热缩管类型 40/60mm热缩管,微型热缩管 加热时间 40mm 和60 mm 热缩管(连续加热模式)的加热时间25秒
40mm 和 60 mm 热缩管(标准模式)的加热时间31秒 回损 >60dB 拉力测试 196 N 放大倍数 101倍, 304倍和 608倍 显示器 5“ 英寸 LCD 彩色显示器,可双向显示,可同时显示X场Y场光纤图像 数据和视频接口 USB 20 存储记忆 2,000 组熔接数据 图像记忆功能 自动获取最近100个熔接图像, 存储 24 张光纤图像 *** 作界面 GUI中文图像化 *** 作界面 电池容量 200 次熔接和加热(两块电池),连续工作三小时
80 次熔接和加热(一块电池) 显示语言 20 种语言 *** 作温度 零下10度到50 度 (不结露) 存储温度 零下40度到60 度 (不结露) 高度 从海平面到海拔高度5,000米 防风 具有15米/秒防风能力 电源 自动电压选择,交流 100 to 240V (50/60Hz), 直流 11 to 17 V,可
使用汽车电源(需选配汽车电源连接线) 数据传输 USB20 高速数据接口,同时支持视频输出。 工作台 有
以下是下载离线插件包的方法:第一步:
每个Google Chrome扩展都有一个固定的ID,例如>
以上就是关于security可以针对用户设置只读权限吗全部的内容,包括:security可以针对用户设置只读权限吗、C语言 编一个程序,产生0-100随机数,然后用选择排序法,从小到大排列、古河S178熔接机的技术参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)