数据库授予⽤户增删改查的权限的语句_SQLServer数据库之
设置Sqlserver⽤户对。。。
本⽂主要向⼤家介绍了SQLServer数据库之设置Sql server⽤户对表、视图、存储过程、架构的增删改查权限,通过具体的内容向⼤家展现,希望对⼤家学习SQLServer数据库有所帮助。
根据数据库Schema限制⽤户对数据库的操作⾏为
授予Shema dbo下对象的定义权限给某个⽤户(也就是说该⽤户可以修改架构dbo下所有表/视图/存储过程/函数的结构)
use [Your DB NAME]
GRANT VIEW DEFINITION ON SCHEMA :: dbo to [THE USER NAME]
回收某个⽤户对Shema dbo下对象的定义权限(也就是说该⽤户不可以修改架构dbo下所有表/视图/存储过程/函数的结构)
use [Your DB NAME]
DENY VIEW DEFINITION ON SCHEMA :: dbo to [THE USER NAME]
允许某个⽤户执⾏Shema dbo下定义的存储过程
GRANT EXEC ON SCHEMA :: dbo TO [your_DB_account]
不允许某个⽤户执⾏Shema dbo下定义的存储过程
DENY EXEC ON SCHEMA :: dbo TO [your_DB_account]
允许某个⽤户可以对Schema dbo下对象进⾏增删改查操作
GRANT SELECT ON SCHEMA :: dbo TO [your_DB_account] -- 允许查询数据权限
GRANT UPDATE ON SCHEMA :: dbo TO [your_DB_account] -- 允许更新数据权限
GRANT INSERT ON SCHEMA :: dbo TO [your_DB_account] -- 允许插⼊数据权限
GRANT DELETE ON SCHEMA :: dbo TO [your_DB_account] -- 允许删除数据权限
不允许某个⽤户对Schema dbo下对象进⾏增删改查操作
DENY SELECT ON SCHEMA :: dbo TO [your_DB_account] -- 不允许查询数据权限
DENY UPDATE ON SCHEMA :: dbo TO [your_DB_account] -- 不允许更新数据权限
DENY INSERT ON SCHEMA :: dbo TO [your_DB_account] -- 不允许插⼊数据权限
DENY DELETE ON SCHEMA :: dbo TO [your_DB_account] -- 不允许删除数据权限
限制⽤户对数据库对象(⽐如表/视图/存储过程等)的操作⾏为
允许⽤户修改数据库表T_Testing的结构
GRANT VIEW DEFINITION ON [dbo].[T_Testing] to [THE USER NAME]
不允许⽤户修改数据库表T_Testing的结构
DENY VIEW DEFINITION ON [dbo].[T_Testing] to [Customer]
允许⽤户对数据库表T_Testing进⾏增删改查操作
GRANT SELECT ON [dbo].[T_Testing] TO [your_DB_account] -- 允许查询数据权限
GRANT UPDATE ON [dbo].[T_Testing] TO [your_DB_account] -- 允许更新数据权限
GRANT INSERT ON [dbo].[T_Testing] TO [your_DB_account] -- 允许插⼊数据权限
GRANT DELETE ON [dbo].[T_Testing] TO [your_DB_account] -- 允许删除数据权限
不允许⽤户对数据库表T_Testing进⾏增删改查操作
DENY SELECT ON [dbo].[T_Testing] TO [your_DB_account] -- 不允许查询数据权限
DENY UPDATE ON [dbo].[T_Testing] TO [your_DB_account] -- 不允许更新数据权限
DENY INSERT ON [dbo].[T_Testing] TO [your_DB_account] -- 不允许插⼊数据权限
基本的增删改查语句DENY DELETE ON [dbo].[T_Testing] TO [your_DB_account] -- 不允许删除数据权限
上⾯这些对数据库表的语句同样适⽤于其它数据库对象,例如视图/存储过程等,如下所⽰:
GRANT VIEW DEFINITION ON [dbo].[V_Testing] to [your_DB_account] --允许⽤户修改视图V_Testing的定义
DENY VIEW DEFINITION ON [dbo].[V_Testing] to [your_DB_account]--不允许⽤户修改视图V_Testing的定义
GRANT VIEW DEFINITION ON [dbo].[P_Testing] to [your_DB_account] --允许⽤户修改存储过程P_Testing的定义
DENY VIEW DEFINITION ON [dbo].[P_Testing] to [your_DB_account]--不允许⽤户修改存储过程P_Testing的定义
但是注意SELECT/UPDATE/DELETE/INSERT这⼏个增删改查的权限不适⽤于存储过程
此外对数据库对象(⽐如表/试图/存储过程等)的上述操作⾏为,还可以直接设置在数据库⾓⾊(注意是数据库⾓⾊,不是数据库Instance⾓⾊)上,例如:
允许数据库MyDataBase的⾓⾊MyRole对表T_Testing拥有增删改查权限
USE [MyDataBase]
GRANT SELECT ON [dbo].[T_Testing] TO [MyRole] -- 允许查询数据权限
GRANT UPDATE ON [dbo].[T_Testing] TO [MyRole] -- 允许更新数据权限
GRANT INSERT ON [dbo].[T_Testing] TO [MyRole] -- 允许插⼊数据权限
GRANT DELETE ON [dbo].[T_Testing] TO [MyRole] -- 允许删除数据权限
不允许数据库MyDataBase的⾓⾊MyRole对表T_Testing进⾏增删改查操作
USE [MyDataBase]
DENY SELECT ON [dbo].[T_Testing] TO [MyRole] -- 不允许查询数据权限
DENY UPDATE ON [dbo].[T_Testing] TO [MyRole] -- 不允许更新数据权限
DENY INSERT ON [dbo].[T_Testing] TO [MyRole] -- 不允许插⼊数据权限
DENY DELETE ON [dbo].[T_Testing] TO [MyRole] -- 不允许删除数据权限
此外对于SELECT/UPDATE/DELETE/INSERT这⼏个增删改查的权限还可以直接设置到表/试图的列上,例如下⾯语句我们设置数据库MyDataBase的⾓⾊MyRole拥有表T_Tesing和视图V_Testing中列Name的增删改查权限
USE [MyDataBase]
GRANT SELECT ON [dbo].[T_Testing]([Name]) TO [MyRole] -- 允许查询表T_Testing的Name列数据
GRANT UPDATE ON [dbo].[T_Testing]([Name]) TO [MyRole] -- 允许更新表T_Testing的Name列数据
GRANT INSERT ON [dbo].[T_Testing]([Name]) TO [MyRole] -- 允许插⼊表T_Testing的Name列数据
GRANT DELETE ON [dbo].[T_Testing]([Name]) TO [MyRole] -- 允许删除表T_Testing的Name列数据
GRANT SELECT ON [dbo].[V_Testing]([Name]) TO [MyRole] -- 允许查询视图V_Testing的Name列数据
GRANT UPDATE ON [dbo].[V_Testing]([Name]) TO [MyRole] -- 允许更新视图V_Testing的Name列数据
GRANT INSERT ON [dbo].[V_Testing]([Name]) TO [MyRole] -- 允许插⼊视图V_Testing的Name列数据
GRANT DELETE ON [dbo].[V_Testing]([Name]) TO [MyRole] -- 允许删除视图V_Testing的Name列数据
使⽤数据库权限控制⽤户的访问⾏为
如果希望某个⽤户只拥有某个数据库的只读权限,最简单的办法就是只将该数据库的⾓⾊db_datareader赋予⽤户即可:exec sp_addrolemember‘ db_datareader‘,‘⽤户名‘
这⾥最后列出所有数据库Instance⾓⾊和(⽤户映射)数据库⾓⾊的含义:
数据库Instance⾓⾊:
sysadmin 可以在SQLServer中执⾏任何活动。
serveradmin 可以设置服务器范围的配置选项,关闭服务器。
setupadmin 可以管理链接服务器和启动过程。
securityadmin 可以管理登录和CREATEDATABASE权限,还可以读取错误⽇志和更改密码。
processadmin 可以管理在SQLServer中运⾏的进程。
dbcreator 可以创建、更改和除去数据库。
diskadmin 可以管理磁盘⽂件。
bulkadmin 可以执⾏BULKINSERT语句。
(⽤户映射)数据库⾓⾊:
db_owner执⾏数据库中的所有维护和配置活动。
db_accessadmin添加或删除Windows⽤户、组和SQLServer登录的访问权限。
db_datareader读取所有⽤户表中的所有数据。
db_datawriter添加、删除或更改所有⽤户表中的数据。
db_ddladmin在数据库中运⾏任何数据定义语⾔(DDL)命令。
db_securityadmin修改⾓⾊成员⾝份并管理权限。
db_backupoperator备份数据库。
db_denydatareader⽆法读取数据库⽤户表中的任何数据。
db_denydatawriter⽆法添加、修改或删除任何⽤户表或视图中的数据。
本⽂由职坐标整理并发布,希望对同学们学习SQL Server有所帮助,更多内容请关注职坐标数据库SQL Server数据库频道!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论