下面呢是我在学习数据控制时遇到的问题和解决方法,可能也不是很对,希望看到我这篇文章的大佬能给我指点指点。
我为什么要写这篇文章呢?
(1)当做以后复习的资料;
(2)锻炼一下自己写文章的能力;
什么是数据控制?
【1】把授权的决定告知系统
【2】把授权结果存入数据字典
【3】当用户提出操作请求时,根据授权情况进行检查以决定是否执行操作请求
根据数据控制的定义我们便引入了GRANT(授权)语句和REVOKE(回收)语句
首先来看GRANT语句:

GRANT语句的一般格式:GRANT <权限>[,<权限>]... [ON <对象类型> <对象名>]TO <用户>[,<用户>]...[WITH GRANT OPTION];
语义:将对指定操作对象的指定操作权限授予指定的用户

我们常见的权限包括:INSERT、CREATE、UPDATE、DELETE、ALTER、SELECT
对象类型:表,视图,用户;
WITH GRANT OPTION:使获得某种权限的用户不仅可以使用,还可以进行传播;
说明:
发出GRANT:
DBA
数据库对象创建者(即属主Owner)
拥有该权限的用户

按受权限的用户 :
一个或多个具体用户
PUBLIC(全体用户)
例如:把查询Student表的所有权限授予用户U1;

 GRANT   SELECT ON   TABLE   Student TO   U1;

接下来看看REVOKE的用法:
授予的权限可以由DBA或其他授权者用REVOKE语句收回

REVOKE语句的一般格式为:REVOKE <权限>[,<权限>]... [ON <对象类型> <对象名>]//注意此处有没有根据情况而定,例如如果收回创建表的权限该局就不存在了;FROM <用户>[,<用户>]...;

例如:把用户U4修改学生学号的权限收回

REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;

小结:
DBA:拥有所有对象的所有权限
不同的权限授予不同的用户
用户:拥有自己建立的对象的全部的操作权限(这个地方在我做实验的时候就出错了,以后再详细说)
GRANT:授予其他用户
被授权的用户
“继续授权”许可:再授予(WITH GRANT OPTION)
所有授予出去的权力在必要时又都可用REVOKE语句收回

以上呢都是关于数据控制的基本知识

下面我来说一说实验过程中遇到的问题:
【1】在使用SQL Server2012界面工具创建登录名的时候,虽然创建成功了,但是由于我在创建过程中可能对一些选项不是很理解,误选了,导致我在接下来的操作过程中处处栽坑。
(1)在我没有给用户设置任何权限的时候,便可以进行SELECT一些操作。话不多说,一顿百度,跌跌撞撞就对了。
在用界面工具创建了一个用户后,选用了db_datareader(数据库角色成员身份),db_datareader有查询所有对象的权限:表,视图,存储过程,函数等,
数据库角色:指一组固定的用某些权限的数据库角色;//职位,集成式的管理方式(老师说就像班长一样,具有某些管理班级的权利)
所以要想使你创建的用户不具有任何权限,这个选项就不要选了啊。
下面是我百度搜刮到的知识:
数据库角色:
public
–public 角色是一个特殊的数据库角色,每个数据库用户都属于它。public 角色:
–捕获数据库中用户的所有默认权限。
–无法将用户、组或角色指派给它,因为默认情况下它们即属于该角色。
–含在每个数据库中,包括 master、msdb、tempdb、model 和所有用户数据库。
–无法除去。

db_owner
–进行所有数据库角色的活动,以及数据库中的其它维护和配置活动。
–该角色的权限跨越所有其它固定数据库角色。

db_accessadmin
–在数据库中添加或删除 Windows NT 4.0 或 Windows 2000 组和用户以及 SQL Server 用户。

db_datareader
–查看来自数据库中所有用户表的全部数据。

db_datawriter
–添加、更改或删除来自数据库中所有用户表的数据

db_ddladmin
–添加、修改或除去数据库中的对象(运行所有 DDL)

db_securityadmin
–管理 SQL Server 2000 数据库角色的角色和成员,并管理数据库中的语句和对象权限

db_backupoperator
–有备份数据库的权限

db_denydatareader
–拒绝选择数据库数据的权限

db_denydatawriter
–拒绝更改数据库数据的权限
(2)第二个遇到的问题就是架构了,这个是因为我在给一个用户创建表和视图的权限以后,便在该用户的登录下,创建表和视图时,报错。
错误原因:默认dbo.架构不存在或该用户不存在操作权限(大致意思是这样,具体提示我给忘了);
一开始遇到这种操作时,我就先百度了一下,有种方法便是创建新的架构
例如:

第二种就是选择db_owner
db_owner
–进行所有数据库角色的活动,以及数据库中的其它维护和配置活动。
–该角色的权限跨越所有其它固定数据库角色。

例如:在要操作的数据库中,左击安全性,找到用户xsuser1,选择拥有的架构,选择db_owner;(这个是听实验课上的同学说的,不过这个有利有弊吧,虽然可以建表了,但还会带来一些其他权限,这个地方我并不是很明白,希望能看到我这篇文章的大佬,帮忙支招

第三种办法:
使用sql语句:

所在架构的alter权限:
语句如:grant alter on schema :: dbo to xsuser1

这个意思大概就是将修改dbo下数据库对象的权限赋给xsuser1吧(我只会用,并不知道为什么会这样)
再来说说什么是架构?
百度查到的:架构是对象的拥有者,架构本身无权限,架构包含数据库对象:如表、视图、存储过程和函数等,平时最常见的默认架构dbo.,如果没指定架构默认创建数据库对象都是以dbo.开头,架构的拥有者是数据库用户,数据库角色、应用程序角色。用户创建的架构和角色只作用于当前库;尤其是最后一句要记得哦

通过查阅资料发现数据库中的架构说的含糊不清,只能靠自己的理解了。
我理解的架构就是一个杂货架,里面可以放不同种类的东西,不过放的东西种类还是有范围的。
补充知识:
服务器登录名:指有权限登录到某服务器的用户;
服务器角色:指一组固定的服务器用户,默认有9组;
登录名一定属于某些角色,默认为PUBLIC;
服务器角色不允许更改;
登录后也不一定有权限操作数据库;
数据库用户:指有权限能操作数据库的用户;
数据库角色:指一组固定的用某些权限的数据库角色;//职位,集成式的管理方式
数据库架构:指数据库对象的容器;
数据库用户对应于服务器登录名一遍登录者可以操作数据库;
数据库角色可以添加,可以定制不同的权限;
数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象;

角色
角色是一类权限的组合;数据库角色的拥有者可以是用户也可以是数据库角色本身,管理员可以创建数据库角色,也可以勉强将数据库理解为一组相同权限的用户,为什么这么说呢?因为数据库角色和数据库用户不允许存在同名;

一般在windows和sa下创建用户;
选中对应的授权数据库,再开始授权;
CREATE table只能在MASTER下去做

使用sp_addlogin创建新的登录名时还要映射到相应的数据库;
系统管理员才可以创建新用户,而新用户没有那么大的权限;

最后再来个比较简单的思维导图:

总结:我知道我还有很多不足、遗漏的知识点和可能理解错的地方,不过我会在接下来的学习过程中继续补充和改正的,也希望大家可以多多指正。

SQL Server数据控制(Grant和Revoke)——架构相关推荐

  1. 使用SQL Server数据工具和Visual Studio Online进行连续部署

    In the previous posts 在以前的帖子中 Deployment to several databases using SQL Server Data Tools and TFS us ...

  2. 使用游标正确提取SQL Server数据并将其放置在Reporting Services矩阵中

    介绍 ( Introduction ) In our last two chats, we discussed enterprises that have had financial years th ...

  3. 使用SQL Server数据工具进行SQL单元测试

    This article on SQL Unit Testing is the second part on the series about SSDT and database developmen ...

  4. sql server 分区_使用分区归档SQL Server数据

    sql server 分区 The Partition feature was introduced in the SQL Server 2005. This article is to cover ...

  5. sql azure 语法_使用Azure Data Studio从SQL Server数据创建图表

    sql azure 语法 In this article, we will explore charts in an Azure Data Studio using data stored in SQ ...

  6. sql数据库查询聚合函数_如何使用SQL Server数据质量服务确保正确的数据聚合

    sql数据库查询聚合函数 介绍 (Introduction) An interesting opportunity arose at a client site during early Octobe ...

  7. SQL server数据缓存依赖

    为什么80%的码农都做不了架构师?>>>    SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1  轮询模式实现步骤 此模式需要SQL SERVER 7.0/ ...

  8. 浅析SQL Server数据修复命令DBCC的使用

    SQL Server数据库提供了修复命令DBCC,当SQL Server数据库遭到质疑或者是有的无法完成读取时可以尝试用此命令来修复.以下是一些常见的DBCC修复命令,希望会给读者带来帮助.    1 ...

  9. 将本地的MS SQL Server数据导入到远程服务器上

    该演示引导客户将本地的MS SQL Server数据导入到远程服务器上,供客户的网站使用. 首先登录到远程数据库服务器: 1.右击您准备导入数据的数据库,选择"所有任务"下的&qu ...

最新文章

  1. maven The method must override a superclass method
  2. 查看Linux 系统的配置和增减用户/增减组/增减权限
  3. 阿里达摩院青橙奖“硬核10人”出炉,钟南山寄语青年科学家
  4. 事件选择WSAEventSelect
  5. Python线程类首先是一个类
  6. Perhaps you should add the directory containing libpcre.pc to the PKG_CONFIG_PATH
  7. Cannot read property ‘map‘ of undefined报错问题
  8. 一个快播倒下去,千千万万个快播站起来
  9. 985翻译硕士都在找的这款软件
  10. java画图抗锯齿_Android编程画图之抗锯齿解决方法
  11. 分页利用PageHelper.startPage(page, rows)时所放位置的注意事项
  12. 【CF633H】Fibonacci-ish II(权值线段树)(莫队)
  13. linux 两个序列比对,Clustal:多序列比对分析、序列同源性分析
  14. 马哥教育42期第三周作业
  15. [Python] U盘检测并复制所需的文件
  16. 什么是数据分层,数据分层的作用!
  17. android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)
  18. JavaScript中的LHS和RHS查询
  19. 计算机信息安全论文参考文献,信息安全学论文参考文献 信息安全核心期刊参考文献哪里找...
  20. PO等等6种对象包命名含义:PO、VO、BO、DTO、POJO、DAO

热门文章

  1. html怎么给边框加投影,【uniapp 开发】如何给边框添加阴影效果
  2. JAVA最新编程50题
  3. L2-017 人以群分 (25分)
  4. html5 实现可拖拽移动的悬浮图标
  5. linux常用命令-删除空目录rmdir
  6. SSL证书下载失败如何解决
  7. 畅享10e会有鸿蒙吗,畅享10e全局领先小米10,卢伟冰嘲讽:年度“机皇”
  8. 【独行秀才】macOS Monterey 12.0.1正式版(21A559)原版镜像
  9. 红米K30S至尊纪念版和opporeno4se参数对比 哪个更值得入手
  10. C语言变量的分类(C语言六)