权限赋予
来源:互联网 发布:js sort 排序 编辑:程序博客网 时间:2024/04/27 21:55
MSSQL中权限存在三种方式
1、login设置server roles
2、user设置user roles
3、user通过gant/deny对DBobject进行一一权限授予或拒绝
第一种方式一般我们在给予一个login高权限时使用,比如我们要授予一个用户sa级别权限可以使用
EXEC master..sp_addsrvrolemember @loginame = N'LoginName', @rolename = N'sysadmin'
第二种方式是最常用的授权方式,该方式统一简洁容易管理,是推荐的办法。
如下面,我们给予了用户对当前DB 的读写权限
use DBName goIF not EXISTS(SELECT TOp 1 *FROM sys.sysusersWHERE name = 'UserName')BEGINEXEC('create user UserName for login LoginName ')EXEC('EXEC sp_addrolemember ''db_datareader'',UserName ')end
常用role为
db_datareader --对当前数据库对象的只读权限db_datawriter --对当前数据库对象的写权限db_owner --数据库所有者,对当前DB对象的全部操作权限
我们可以通过一下脚本查看当前DB中所有用户拥有的对象,以及对应的LoginName
use DBName goselect DBRole = g.name, MemberName = u.name,LoginName=t1.name From sys.database_principals u with(nolock), sys.database_principals g with(nolock), sys.database_role_members m with(nolock), sys.server_principals t1 with(nolock) Where g.principal_id = m.role_principal_id And u.principal_id = m.member_principal_id and u.sid=t1.sid
该方式存在的缺陷为,除了db_owner外,其他角色并不能得到执行sp/funcation的权限,而给予db_owner用户权限又会大。
第三种方式也是一种常见的授权方式 ,但一般都仅正对需要对单独DB 对象做权限控制的时候时候 ,比如同步链的目的端就应该禁止管理员以外的人手动更改,否则会出现同步错误,这是该方法就发挥作用了
--允许/拒绝表的单独权限给用户grant/DENY INSERT,UPDATE,DELETE ON TBName TO UserName--给予用户某个具体的SP运行权限grant execute on SPName to UserName--给予用户对所有对象的查询权限grant select to UserName
第二 和第三种方法结合使用我们可以解决仅允许用户查询或运行SP 这样的权限需求
--例如: --step 1IF not EXISTS(SELECT TOp 1 *FROM sys.sql_loginsWHERE name = 'LoginName')BEGIN CREATE LOGIN LoginName WITH PASSWORD = N'pwd',CHECK_policy = OFFend--step 2use DBName goIF not EXISTS( SELECT TOp 1 * FROM sys.sysusers WHERE name = 'UserName')begincreate user userName for login LoginNameEXEC sp_addrolemember 'db_datareader',UserNameend--step3grant execute to userName
- 权限赋予
- 赋予权限
- SAP权限赋予
- sudo权限的赋予
- 给数据库赋予权限
- mysql赋予权限
- mysql 权限赋予
- oracle grant 赋予权限?
- ORACLE赋予权限
- 赋予表权限
- 赋予普通用户特殊权限
- 赋予root权限
- 文件夹赋予权限
- 赋予普通用户sudo权限
- 新用户赋予sudo权限
- mysql赋予权限
- myql权限赋予
- Oracle权限赋予
- Extjs4.1:一个column chart结构
- QTableWidget的使用
- QSortFilterProxyModel的使用
- Asp.net项目同一个用户后登录把前面登录的踢下线的两种实现方法
- QString的使用
- 权限赋予
- “System.Windows.Controls.DataGridColumnCollection”类型的集合添加值时发生异常。 [Line: 772 Position: 172]
- QDrag的使用
- WindRAR 4.10,4.11,4.20 注册版
- iOS开发---开源项目和开源类库篇(持续更新中)
- linux《浅谈Linux的硬链接和软链接的区别》
- Monkey's Audio 4.10 英文原版+汉化版
- Camtasia Studio 8.0.2 绿色破解版
- JSONP