SQL Server数据控制(Grant和Revoke)——架构
下面呢是我在学习数据控制时遇到的问题和解决方法,可能也不是很对,希望看到我这篇文章的大佬能给我指点指点。
我为什么要写这篇文章呢?
(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)——架构相关推荐
- 使用SQL Server数据工具和Visual Studio Online进行连续部署
In the previous posts 在以前的帖子中 Deployment to several databases using SQL Server Data Tools and TFS us ...
- 使用游标正确提取SQL Server数据并将其放置在Reporting Services矩阵中
介绍 ( Introduction ) In our last two chats, we discussed enterprises that have had financial years th ...
- 使用SQL Server数据工具进行SQL单元测试
This article on SQL Unit Testing is the second part on the series about SSDT and database developmen ...
- sql server 分区_使用分区归档SQL Server数据
sql server 分区 The Partition feature was introduced in the SQL Server 2005. This article is to cover ...
- 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 ...
- sql数据库查询聚合函数_如何使用SQL Server数据质量服务确保正确的数据聚合
sql数据库查询聚合函数 介绍 (Introduction) An interesting opportunity arose at a client site during early Octobe ...
- SQL server数据缓存依赖
为什么80%的码农都做不了架构师?>>> SQL server数据缓存依赖有两种实现模式,轮询模式,通知模式. 1 轮询模式实现步骤 此模式需要SQL SERVER 7.0/ ...
- 浅析SQL Server数据修复命令DBCC的使用
SQL Server数据库提供了修复命令DBCC,当SQL Server数据库遭到质疑或者是有的无法完成读取时可以尝试用此命令来修复.以下是一些常见的DBCC修复命令,希望会给读者带来帮助. 1 ...
- 将本地的MS SQL Server数据导入到远程服务器上
该演示引导客户将本地的MS SQL Server数据导入到远程服务器上,供客户的网站使用. 首先登录到远程数据库服务器: 1.右击您准备导入数据的数据库,选择"所有任务"下的&qu ...
最新文章
- 深度学习---TensorFlow学习笔记:搭建CNN模型
- 为什么Redis内存不宜过大
- 高薪必备的一些Spring Boot高级面试题
- 科大星云诗社动态20210903
- Java未被捕获的异常
- Reflector 插件-Reflexil
- php代码格式化工具 php-cs-fixer的使用
- TFS2010 删除工作区(同时删除工作区中所有的目录映射)
- php 重新编译_linux下为php添加GD库(重新编译php)
- 叙述计算机网络拓扑结构的定义,计算机网络拓扑结构的定义
- 14款荣耀/华为机型获版本升级: 适配FlyPods Pro骨声纹识别
- 理解promise、async 和await之间的执行关系
- Android 获取手机号及运营商信息
- 毕业生简单的用Python实现一个信息管理系统【含示例代码】
- 二进制,八进制十进制十六进制之间数据转换
- 【渝粤教育】国家开放大学2019年春季 1087数学分析专题研究 参考试题
- 创建一个cocos2d-x工程添加一个自定义Scene并显示
- 传奇电子cq9跳高高、跳起来规则与操作技巧
- 数据分析及数据挖掘学习路线
- c语言头文件的使用和写法,C语言头文件的使用与写法
热门文章
- 30个优秀的CSS导航菜单和按钮教程
- ipad吃鸡用什么蓝牙耳机好?ipad用吃鸡低延迟的蓝牙耳机推荐
- vcs+verdi仿真Verilog代码
- python中shell是什么意思中文翻译-python shell是什么东西
- 双上行链路的热备份网关冗余
- 动画制作如何实现?看过来 | 万彩动画大师
- semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机(转)
- android应用更改系统语言,android app根据系统语言设置应用语言
- vue-router.esm.js?fe87:16 [vue-router] Named Route ‘Home‘ has a default child route. When navigating
- 文档图像倾斜角检测及校正(一)(Matlab)