目录

文章目录

  • 目录
    • 1. 概述
    • 2. 服务器级别
      • 2.1 服务器级用户(即:登录名)
      • 2.2 服务器级角色
    • 3. 数据库级别
      • 3.1 数据库级用户
      • 3.2 数据库级角色
      • 3.3 架构
      • 3.4 数据库级别设置
      • 3.5 相互之间的关系
    • 4. 使用sql语句为数据库用户赋予权限
      • 4.1 回顾创建数据库
      • 4.2 创建登录sqlsever服务器的登录名
      • 4.3 创建数据库用户
      • 4.4 为数据库用户赋予数据库操作权限

1. 概述

在SQL Server中,用户和角色都是分为服务器级别和数据库级别的。

2. 服务器级别

2.1 服务器级用户(即:登录名)

服务器级别下的登录名是指:有权限登录到某个SQL Server服务器的用户。

例如:超级管理员的登录名是sa;

登录名具体位置在: 数据库——>安全性——>登录名

2.2 服务器级角色

服务器级角色是指:为帮助您管理服务器上的权限,SQL Server 提供了若干角色,这些角色是用于对其他主体进行分组的安全主体。
服务器级角色的权限作用域为服务器范围。SQL Server 提供了九种固定服务器角色, 无法更改授予固定服务器角色的权限,这9组角色分别如下:

  • sysadmin —— 在SQL Server中进行任何活动,该角色的权限跨越所有其它固定服务器角色;
  • serveradmin —— 更改服务器范围内的配置选项并关闭服务器;
  • setupadmin —— 添加和删除链接服务器,并执行某些系统存储过程(如 sp_serveroption);
  • securityadmin —— 授予数据库引擎的访问权限和配置用户权限的能力使得安全管理员可以分配大多数服务器权限,securityadmin 角色应视为与sysadmin 角色等效;
  • processadmin —— 管理在 SQL Server 实例中运行的进程;
  • dbcreator —— 创建和改变数据库,但是没有读取权限;
  • diskadmin —— 管理磁盘文件;
  • bulkadmin —— 执行 BULK INSERT 语句;
  • public —— 每个 SQL Server 登录名均属于 public 服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,该用户将继承授予该对象的 public 角色的权限。当您希望该对象对所有用户可用时,只需对任何对象分配 public 权限即可。您无法更改 public 中的成员关系。public 的实现方式与其他角色不同,但是,可以从 public 授予、拒绝或撤销权限。

服务器角色具体位置在: 数据库——>安全性——>服务器角色

注意:

登录名一定属于某些角色,默认为public;

服务器角色不允许更改;

登录后也不一定有权限操作数据库;

3. 数据库级别

3.1 数据库级用户

数据库级用户是指:有权限能操作(比如:增删查改等权限)数据库的用户。

用户具体位置在 数据库——>某个具体库——>安全性——>用户

3.2 数据库级角色

SQL Server 中有两种类型的数据库级角色:

  • 数据库中预定义的 “固定数据库角色” ;
  • 您可以创建的 “灵活数据库角色” ;

固定的有某些权限的数据库角色,所有数据库中都有这些角色,默认有10个,分别如下:

  1. public

public 角色是一个特殊的数据库角色,每个数据库用户都属于它。public 角色:

捕获数据库中用户的所有默认权限。
无法将用户、组或角色指派给它,因为默认情况下它们即属于该角色。
包含在每个数据库中,包括 master、msdb、tempdb、model 和所有用户数据库。
无法除去。

  1. db_owner

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

  1. db_accessadmin

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

  1. db_datareader

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

  1. db_datawriter

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

  1. db_ddladmin

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

  1. db_securityadmin

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

  1. db_backupoperator

有备份数据库的权限

  1. db_denydatareader

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

  1. db_denydatawriter

拒绝更改数据库数据的权限

数据库角色具体位置在: 数据库——>某个具体库——>安全性——>角色——>数据库角色

注意:

请不要将灵活数据库角色添加为固定角色的成员,这会导致意外的权限升级。

3.3 架构

架构(Schema)是一组数据库对象的集合,它被单个负责人(可以是用户或角色)所拥有并构成唯一命名空间。可以将架构看成是对象的容器。

数据库用户对应于服务器登录名以便登录者可以操作数据库
数据库角色可以添加,可以定制不同权限  
数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象

架构数据库角色具体位置在: 数据库——>某个具体库——>安全性——>架构

3.4 数据库级别设置

服务器级 -> 数据库级 -> 架构级 - > 数据对象级

比如:Server.DataBase1.dbo.Table1,这里的意思就是Table1这个表属于dbo这个架构,dbo这个架构属于DataBase1这个数据库,DataBase1这个数据库属于Server这个服务器。里面的架构其实就是一个容器,好像就是面向对象里面的命名空间,一个用户可以拥有多个架构,但是不能对没有拥有的架构进行操作。一个数据库角色,是对不同架构里面数据对象的权限组织,也有可能涉及到多个架构,当某一个用户被转换成一种数据库角色的时候,假如这个用户本身不拥有某一个架构而该数据库角色拥有,那它当它对那个架构进行操作的时候就会出错。

3.5 相互之间的关系

  1. SQL Server服务器登录名与数据库用户在服务器级别是一对多的,在数据库级别是一对一的。

登录名可以理解为进入整个大楼的钥匙,用户名可以理解为一个房间的钥匙,这里所说的大楼就是sql server服务器,而房间就是这个sql server服务器中的具体的库,要注意登录名是存在于master数据库的syslogins表中,用户名是在各个具体的库下建立的(也就是要先进入各个库), 最关键的是:一个登录名可以和多个不同库下的用户做映射,但是在同一个库下只能和一个用户做映射,并且一个用户名可以和多个登录名有映射关系, 真正有权限的是用户名,只不过是用登录名去登进数据库,然后去找映射的用户名,这样就有了相应的权限,刚开始建立的登录名只要把该登录名的服务器角色设置为Database Creator,就可以创建新的数据库了,并且新建立的这个数据库中会自动生成两个用户名:dbo和guest。并且刚刚建立的登录名就和dbo映射了,还有就是rbo也和sa映射了,因为sa作为管理员的登录名和每个库中的rbo用户映射。

  1. 一个数据库角色有可能涉及多个架构,数据库角色对应的是权限。
  2. 一个用户对应一个数据库角色。
  3. 一个数据库用户可以对应多个架构(架构是表容器),架构里面包含的是数据库表。

4. 使用sql语句为数据库用户赋予权限

4.1 回顾创建数据库

use master;
go  create database E_Market
on primary
(name="E_Market_data", filename="/var/opt/mssql/data/E_Market_data.mdf",size=5MB, maxsize=100MB, filegrowth=15%)log  on
(name="E_Market_log", filename="/var/opt/mssql/data/E_Market_log.ldf",size=5MB, filegrowth=0)go 

4.2 创建登录sqlsever服务器的登录名

create login '登录名' with password='密码';
go

4.3 创建数据库用户

create user '数据库用户名' for login '登录名' ;
go

4.4 为数据库用户赋予数据库操作权限

grant '操作权限' on '数据库.表名' to '数据库用户名';
go

sqlsever数据库用户管理相关推荐

  1. 数据库用户管理(增删改查,即CRUD)

    数据库用户管理 -- 创建用户CREATE USER用户名IDENTIFIED BY '密码' CREATE USER xiaochen IDENTIFIED BY '123456' -- 修改密码( ...

  2. 数据库基本操作-----数据库用户管理和授权

    目 录 一.数据库用户管理 1.新建用户 2.查看用户信息 3.重命名用户 4.删除用户 5.修改当前登录用户密码 6.修改其他用户密码 7.忘记 root 密码的解决办法 (1)修改 /etc/my ...

  3. Oracle数据库用户管理之二---权限授权去权(用户和角色)

                                Oracle数据库用户管理之二---权限授权去权(用户和角色) 书接上回,https://blog.csdn.net/alwaysbefine/ ...

  4. MySQL数据库用户管理以及数据库用户授权

    目录 一.数据库用户管理 1.新建用户 2.查看用户信息 3.重命名用户 4.删除用户 5.修改当前登录用户密码 6.修改其他用户密码 7.忘记 root 密码的解决办法 7.1 修改 /etc/my ...

  5. 【数据库二】数据库用户管理与授权

    数据库用户管理与授权 1.MySQL数据库管理 1.1 常用的数据类型 1.2 char和varchar区别 1.3 SQL语句分类 2.数据表高级操作 2.1 克隆表 2.2 清空表 2.3 创建临 ...

  6. mysql数据库用户管理及日志文件

    用户管理 实际应用: MySQL数据库是信息系统中非常重要的一个环节, 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.所以通常由管理员创建不同的管理账户,分配不同的操作权限, ...

  7. MySQL(3)数据库用户管理

    文章目录 一.用户管理 1.1 新建用户 1.2 查看用户信息 1.3 重命名用户 1.4 删除用户 1.5 修改当前登录用户密码 1.6 修改其他用户密码 1.7 忘记 root 密码的解决办法 二 ...

  8. SQL Server2008数据库用户管理 (第三部分)

    3.1创建SQL Server数据库登录名 打开数据库管理器->安全性->登录名->右键选择新建登录名 1)Windows身份验证 选中Windows身份验证,点击搜索,在下面的提示 ...

  9. MySQL数据库用户管理操作(二)

    文章目录 一.数据表操作 1.克隆表 1.1 先克隆表,再克隆数据 1.2 克隆表的数据并创建表 2.清空表 2.1 delete清空表 2.2 truncate清空表 2.3 drop.trunca ...

最新文章

  1. python 批量下载网址_python 遍历oss 实现批量下载
  2. Ubuntu+mps-youtube for crawling video / audio
  3. AlamofireJsonToObjects+EVReflection:一步解决JSON解析
  4. 满城尽带比特币:程序员如何发布自己的 ICO?
  5. 2013年展望:大数据发展十大趋势分析
  6. 嵌入式linux 实现mdev SD卡和U盘自动挂载和卸载的方法 mdev.conf
  7. aircv 安装_Python 通过截图匹配原图中的位置(opencv)实例
  8. 第十二届蓝桥杯青少年组国赛C++中级组 第1题 -- 第3题(python3实现)
  9. 容器编排技术 -- Kubernetes Nodes
  10. 碳酸钡颗粒行业调研报告 - 市场现状分析与发展前景预测
  11. 【PL/SQL】匿名块、存储过程、函数、触发器
  12. linux删除静态arp,Linux如何清理ARP缓存?
  13. mac系统使用技巧链接汇总
  14. 第四季-专题15-网卡驱动程序设计
  15. 前端开发人员MAC装机工具
  16. java word转pdf dox4j,使用 docx4j 将 Web 页面转换为 DOCX 与 PDF 格式
  17. 什么叫faq_FAQ是什么意思啊
  18. Mac谷歌浏览器添加JSONView的插件以提高开发的效率
  19. performance API与页面首屏加载分析
  20. 跟了老板10年被劝退,“忠诚”就换来这个?

热门文章

  1. 微博数据:如何通过西瓜微数平台使用「微博排行榜」功能?
  2. nexus5 线刷5.01
  3. OpenCV 将视频截成等长的小片段
  4. 09年齐鲁软件设计大赛题目
  5. TensorRT+ int8官方论坛中有趣的讨论总结
  6. 宝剑赠英雄 - 任意字段\条件等效查询, 探探PostgreSQL多列展开式B树
  7. 卖水果老板讲解工厂模式第二天营业~
  8. 中国出海秀:暴涨153% 国产游戏在韩7月又占前十半壁江山
  9. Win10 电脑恢复我的电脑图片、视频等文件夹
  10. idea的代码突然消失了怎么复原