SQL Server:用户权限
目录
- 创建 & 删除
- 1. 创建用户命令整理
- 创建 `admin2` 用户
- 创建 `admin_super` 用户
- 2. 删除用户命令
- 删除 `admin2` 用户
- 删除 `admin_super` 用户
- 3. 创建时权限的区别
- `admin2` 用户权限
- `admin_super` 用户权限
- 查看
- 方法一:使用对象资源管理器(图形化界面)
- 查看服务器级别权限
- 查看数据库级别权限
- 方法二:使用系统视图查询
- 查看服务器级别权限
- 查看数据库级别权限
- 服务器角色 --- 预定义的权限集合
创建 & 删除
1. 创建用户命令整理
创建 admin2 用户
-- 在 master 数据库创建登录名
USE master;
BEGINCREATE LOGIN [admin2] WITH PASSWORD=N'Cljslrl0620!', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON;
END;-- 在 db03 数据库创建用户并添加到相应角色
USE [db03];
IF NOT EXISTS (SELECT 1 FROM sysusers WITH(NOLOCK) WHERE name = 'admin2')
BEGINCREATE USER [admin2] FOR LOGIN [admin2];
END;
ALTER ROLE [db_datareader] ADD MEMBER [admin2];
ALTER ROLE [db_datawriter] ADD MEMBER [admin2];
ALTER ROLE [db_ddladmin] ADD MEMBER [admin2];
创建 admin_super 用户
-- 在 master 数据库创建登录名并添加到服务器角色
USE master;
BEGINCREATE LOGIN [admin_super] WITH PASSWORD=N'Cljslrl0620!', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON;
END;
ALTER SERVER ROLE [processadmin] ADD MEMBER [admin_super];
ALTER SERVER ROLE [setupadmin] ADD MEMBER [admin_super];-- 在 msdb 数据库创建用户并添加到相应角色
USE msdb;
IF NOT EXISTS (SELECT 1 FROM sysusers WITH(NOLOCK) WHERE name = 'admin_super')
BEGINCREATE USER [admin_super] FOR LOGIN [admin_super];
END;
ALTER ROLE [SQLAgentOperatorRole] ADD MEMBER [admin_super];
ALTER ROLE [SQLAgentReaderRole] ADD MEMBER [admin_super];
ALTER ROLE [SQLAgentUserRole] ADD MEMBER [admin_super];
ALTER ROLE [db_datareader] ADD MEMBER [admin_super];
IF EXISTS(SELECT 1 FROM sys.procedures WITH(NOLOCK) WHERE name = 'rds_cdc_enable_db')
BEGINGRANT EXECUTE ON [dbo].[rds_cdc_enable_db] TO [admin_super];GRANT EXECUTE ON [dbo].[rds_cdc_disable_db] TO [admin_super];
END;-- 在 db03 数据库创建用户并添加到相应角色,拒绝备份权限
USE [db03];
IF NOT EXISTS (SELECT 1 FROM sysusers WITH(NOLOCK) WHERE name = 'admin_super')
BEGINCREATE USER [admin_super] FOR LOGIN [admin_super];
END;
ALTER ROLE db_owner ADD MEMBER [admin_super];
DENY BACKUP LOG TO [admin_super];
DENY BACKUP DATABASE TO [admin_super];-- 在 db02 数据库创建用户并添加到相应角色,拒绝备份权限
USE [db02];
IF NOT EXISTS (SELECT 1 FROM sysusers WITH(NOLOCK) WHERE name = 'admin_super')
BEGINCREATE USER [admin_super] FOR LOGIN [admin_super];
END;
ALTER ROLE db_owner ADD MEMBER [admin_super];
DENY BACKUP LOG TO [admin_super];
DENY BACKUP DATABASE TO [admin_super];-- 在 db01 数据库创建用户并添加到相应角色,拒绝备份权限
USE [db01];
IF NOT EXISTS (SELECT 1 FROM sysusers WITH(NOLOCK) WHERE name = 'admin_super')
BEGINCREATE USER [admin_super] FOR LOGIN [admin_super];
END;
ALTER ROLE db_owner ADD MEMBER [admin_super];
DENY BACKUP LOG TO [admin_super];
DENY BACKUP DATABASE TO [admin_super];
2. 删除用户命令
删除 admin2 用户
-- 删除登录名
USE master;
DROP LOGIN [admin2];-- 删除 db03 数据库中的用户
USE [db03];
DROP USER IF EXISTS [admin2];
删除 admin_super 用户
-- 删除登录名
USE master;
DROP LOGIN [admin_super];-- 删除 msdb 数据库中的用户
USE msdb;
DROP USER IF EXISTS [admin_super];-- 删除 db03 数据库中的用户
USE [db03];
DROP USER IF EXISTS [admin_super];-- 删除 db02 数据库中的用户
USE [db02];
DROP USER IF EXISTS [admin_super];-- 删除 db01 数据库中的用户
USE [db01];
DROP USER IF EXISTS [admin_super];
3. 创建时权限的区别
admin2 用户权限
- 数据库范围:仅在
db03数据库有相关权限。 - 角色权限:被添加到
db_datareader(可读取数据库中所有用户表中的数据)、db_datawriter(可在所有用户表中添加、删除或更改数据)和db_ddladmin(可以在数据库中运行任何数据定义语言 (DDL) 命令)角色,拥有数据库层面的数据读写和 DDL 操作权限。
admin_super 用户权限
- 服务器角色权限:被添加到
processadmin(可以终止在 SQL Server 实例中运行的进程)和setupadmin(可以添加和删除链接服务器)服务器角色,拥有服务器层面的进程管理和链接服务器管理权限。 - 数据库范围:在
msdb、db03、db02和db01数据库都有相关权限。- msdb 数据库:被添加到
SQLAgentOperatorRole、SQLAgentReaderRole、SQLAgentUserRole和db_datareader角色,同时如果存在rds_cdc_enable_db和rds_cdc_disable_db存储过程,还拥有对这两个存储过程的执行权限。 - db03、db02、db01 数据库:被添加到
db_owner角色(拥有数据库的完全控制权),但被拒绝了BACKUP LOG和BACKUP DATABASE权限,即不能进行数据库日志备份和数据库完整备份操作。
- msdb 数据库:被添加到
查看
在 SQL Server Management Studio (SSMS) 中查看用户权限,可通过对象资源管理器以图形化界面查看,也能使用系统视图通过编写查询语句来查看。以下为你详细介绍这两种方法:
方法一:使用对象资源管理器(图形化界面)
查看服务器级别权限
- 打开 SSMS 并连接到目标 SQL Server 实例。
- 在对象资源管理器中,展开“安全性”节点,然后展开“登录名”节点。
- 右键单击要查看权限的用户登录名,选择“属性”。
- 在弹出的“登录属性”窗口中,选择“服务器角色”页签,可以查看该用户所属的服务器角色,不同的服务器角色拥有不同的服务器级别权限。
- 选择“用户映射”页签,这里可以看到该用户映射到的数据库以及在每个数据库中的角色成员身份。
- 选择“安全对象”页签,点击“搜索”按钮,在弹出的“添加对象”对话框中,选择要查看权限的对象类型(如数据库、表等),然后选择具体的对象。点击“确定”后,下方会显示该用户对所选对象的权限情况。
查看数据库级别权限
- 在对象资源管理器中,展开要查看的数据库节点,然后展开“安全性”节点,再展开“用户”节点。
- 右键单击要查看权限的用户,选择“属性”。
- 在弹出的“数据库用户 - [用户名]”窗口中,选择“成员身份”页签,可以查看该用户所属的数据库角色。
- 选择“安全对象”页签,操作方法与查看服务器级别权限时类似,点击“搜索”按钮选择要查看的对象,然后查看该用户对这些对象的权限。
方法二:使用系统视图查询
查看服务器级别权限
SELECT pr.principal_id,pr.name,pr.type_desc,pe.state_desc,pe.permission_name
FROM sys.server_permissions pe
JOIN sys.server_principals pr ON pe.grantee_principal_id = pr.principal_id
WHERE pr.name = 'your_login_name';
将 your_login_name 替换为要查看权限的用户登录名,执行上述查询后,即可查看该用户的服务器级别权限。
查看数据库级别权限
SELECT dp.class_desc,OBJECT_NAME(dp.major_id) AS object_name,dp.permission_name,grantee_principal_name = grp.name,grantor_principal_name = gran.name
FROM sys.database_permissions dp
JOIN sys.database_principals grp ON dp.grantee_principal_id = grp.principal_id
JOIN sys.database_principals gran ON dp.grantor_principal_id = gran.principal_id
WHERE grp.name = 'your_database_user_name';
将 your_database_user_name 替换为要查看权限的数据库用户名,执行该查询后,就能看到该用户的数据库级别权限。

服务器角色 — 预定义的权限集合
在MSSQL(Microsoft SQL Server)中,服务器角色是一组预定义的权限集合,用于简化对登录名(服务器级主体)权限的管理 。以下是常见服务器角色及其说明:
- bulkadmin:
- 权限:允许执行
BULK INSERT语句,能将数据从文件高效导入到SQL Server表中,常用于大数据量的快速导入场景,比如从CSV文件导入数据到数据库表。 - 应用场景:数据仓库构建过程中,需要批量导入外部数据文件时,可将相关登录名加入此角色。
- 权限:允许执行
- dbcreator:
- 权限:可创建、更改、删除和还原数据库。拥有对数据库创建、修改和删除等生命周期管理的权限。
- 应用场景:数据库开发人员或运维人员,在测试环境、开发环境中频繁创建和删除测试数据库时,可赋予此角色。
- diskadmin:
- 权限:用于管理磁盘文件,包括添加或删除数据库文件(数据文件和日志文件),以及管理数据库的文件组等与磁盘存储相关的操作。
- 应用场景:当数据库需要扩容,添加新的数据文件,或者整理文件组布局时,需要该角色权限。
- processadmin:
- 权限:可以终止SQL Server实例中运行的进程。比如,当某个查询或进程长时间占用资源,影响数据库性能时,可使用此权限来终止该进程。
- 应用场景:数据库管理员在处理性能问题,排查异常占用资源的进程时会用到。
- public:
- 权限:每个SQL Server登录名默认都属于
public角色,它是一个特殊的、基础的角色。public角色包含了一些最基本的权限,如查看数据库中的某些元数据等,但权限非常有限。 - 应用场景:作为默认的、兜底的角色,所有登录名都自动拥有
public角色赋予的权限,不过实际中往往还需赋予其他更具体的角色权限来满足业务需求。
- 权限:每个SQL Server登录名默认都属于
- securityadmin:
- 权限:可管理登录名及其属性,包括创建、修改和删除登录名,还能管理服务器角色成员,以及管理权限的授予、拒绝和撤销等安全相关操作。
- 应用场景:在企业中,负责用户账号和权限管理的人员,需要具备此角色权限来进行用户认证和权限分配工作。
- serveradmin:
- 权限:可以更改服务器范围的配置选项,关闭SQL Server实例等操作。例如,调整服务器的内存分配、配置网络相关设置等。
- 应用场景:高级数据库管理员在对服务器进行整体配置优化、停机维护等操作时需要此权限。
- setupadmin:
- 权限:可添加和删除链接服务器,以及执行某些系统存储过程来配置服务器相关的设置,用于管理服务器之间的连接和通信。
- 应用场景:当企业有多台数据库服务器,需要建立链接服务器来实现跨服务器的数据查询和操作时,需要该角色权限。
- sysadmin:
- 权限:拥有对SQL Server实例的完全控制权限,几乎可以执行所有操作,包括创建、修改和删除数据库,管理登录名、服务器角色,执行任何T - SQL语句等。
- 应用场景:一般仅授予数据库系统的超级管理员,在实际生产环境中,为了安全考虑,通常会尽量减少拥有
sysadmin角色的人员数量。


相关文章:
SQL Server:用户权限
目录 创建 & 删除1. 创建用户命令整理创建 admin2 用户创建 admin_super 用户 2. 删除用户命令删除 admin2 用户删除 admin_super 用户 3. 创建时权限的区别admin2 用户权限admin_super 用户权限 查看方法一:使用对象资源管理器(图形化界面ÿ…...
Windows .gitignore文件不生效的情况排查
概述 今天下班在家里捣腾自己的代码,在配置.gitignore文件忽略部分文件的时候,发现死活不生效 问题根源 经过一通分析和排查才发现,是.gitignore文件的编码错了,刚开始还没注意到,因为是在Windows下开发,…...
cJSON 处理 JSON(轻量级 C 语言库)(二)
第二部分:cJSON 处理 JSON(轻量级 C 语言库) 📢 快速掌握 cJSON!文章 + 视频双管齐下 🚀 如果你觉得阅读文章太慢,或者更喜欢 边看边学 的方式,不妨直接观看我录制的 cJSON 课程视频!🎬 视频里会用更直观的方式讲解 cJSON 的核心概念、实战技巧,并配有动手演示…...
服务器数据恢复—误格式化NTFS文件系统分区别慌,NTFS数据复活秘籍
NTFS文件系统下格式化在理论上不会对数据造成太大影响,但有可能造成部分文件目录结构丢失的情况。下面介绍一个人为误操作导致服务器磁盘阵列中的NTFS文件系统分区被格式化后的服务器数据恢复案例。 服务器数据恢复过程: 1、将故障服务器连接到一台备份…...
《Linux运维总结:基于银河麒麟V10+ARM64架构CPU源码编译部署单实例redis7.2.6》
总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》 一、环境信息 环境信息如下: 主机IP 操作系统 Redis版本 CPU架构 192.168.1.111 K…...
华为云对象存储服务(OBS)
华为云对象存储服务(OBS) 前言 华为云为开发者提供了丰富的 Java SDK,借助这些 SDK 能够方便地与华为云的各类服务进行交互。下面以 华为云对象存储服务(OBS) 的 Java SDK 为例,介绍其使用步骤。 华为云…...
【3】数据结构的双向链表章
目录标题 双向链表的定义双向链表的初始化双向链表的创建插入操作删除操作 双向链表总代码与调试 双向链表的定义 结点结构组成:数据域(data)、指针域(pre)、指针域(next)。其中, da…...
分布式环境下的主从数据同步
目录 1. 数据同步的推/拉方式 1.1 主节点推送 1.2 从节点拉取 1.3 常见组件的推拉方式 2.复制方式 2.1 同步复制 2.2 异步复制 2.3 半同步复制 2.4 常见组件的同步方式 3.日志格式 3.1 基于语句复制 SBR 3.2 基于行复制 RBR 3.3 基于预写日志 WAL 3.4 基于触发器…...
蓝桥杯杯赛-日期模拟
知识点 处理日期 1. 按天枚举日期:逐天遍历起始日期到结束日期范围内的每个日期。 2. 处理闰年:正确判断闰年条件。闰年定义为:年份 满足以下任意一个条件:(闰年的2月只有29天) 满足下面一个条件就是闰年 1> 是 400 的倍数…...
【SQL】MySQL基础2:视图,存储过程,游标,约束,触发器
文章目录 1. 视图2. 存储过程2.1 创建存储过程2.2 执行存储过程 3. 游标4. 约束4.1 主键约束4.2 外键约束4.3 唯一约束4.4 检查约束 5. 触发器 1. 视图 视图是虚拟的表,它是动态检索的部分。使用视图的原因:避免重复的SQL语句;使用表的部分而…...
【TS学习】(15)分布式条件特性
在 TypeScript 中,分布式条件类型(Distributive Conditional Types) 是一种特殊的行为,发生在条件类型作用于裸类型参数(Naked Type Parameter) 时。这种特性使得条件类型可以“分布”到联合类型的每个成员…...
Android 小组件
小部件的布局文件支持如下布局: FrameLayout LinearLayout RelativeLayout GridLayout 以及如下控件 AnalogClock Button Chronometer ImageButton ImageView ProgressBar TextView ViewFlipper ListView GridView StackView AdapterViewFlipper 应该不止这些有空…...
搭建开源笔记平台:outline
折腾的意义 为什么要自己搭建一个笔记平台?没理由,就是突然想试试。有时候突然有个想法,搜了一下正好有合适的方案,就顺手试一下。 其实已经有很多成熟的笔记软件,例如Notion/OneNote,但谁不想要一个数据完…...
Unity编辑器功能及拓展(2) —Gizmos编辑器绘制功能
Unity中的Gizmos功能是用于在场景视图中绘制辅助图形或图标的工具,帮助开发者在编辑模式下直观调试和可视化游戏对象的位置、范围、方向等信息。 一.定义概述 Gizomsd 概述 Gizoms是Unity提供的一个API,或者叫做一个工具类,包含一系列静态…...
电脑屏幕亮度随心控,在Windows上自由调整屏幕亮度的方法
调整电脑屏幕的亮度对于保护视力和适应不同环境光线条件非常重要。无论是在白天强光下还是夜晚昏暗环境中,合适的屏幕亮度都能让您的眼睛更加舒适。本文中简鹿办公小编将向您介绍几种在 Windows 系统中调整屏幕亮度的方法。 方法一:使用快捷键 大多数笔…...
presto行转列
presto的行列转换和spark、hive一样也是通过外链语句实现的,只不过语法和关键子有点不同,如下 with tmp1 as (select 1,2,3 as a1,4,5,6 as a2 ) select * from tmp1 cross join unnest(split(tmp1.a1, ,),split(tmp1.a2, ,) ) as b(a1s,a2s) 结果如下...
MySQL 5.7 Online DDL 技术深度解析
14.13.1 在线DDL操作 索引操作主键操作列操作生成列操作外键操作表操作表空间操作分区操作 索引操作 下表概述了对索引操作的在线DDL支持情况。星号表示有附加信息、例外情况或依赖条件。有关详细信息,请参阅语法和使用说明。 操作原地执行重建表允许并发DML仅修…...
【汽车功能安全:软件与硬件缺一不可】
随着汽车变得越来越智能,功能安全就成为汽车电子系统不可回避的标准体系,日益复杂的功能导致了汽车中电子元件的数量和复杂性的指数级增长(Leen)。如今高级别汽车拥有多达90个电子控制单元(ECU),…...
docker打包使用有头模式playwright
1.打包镜像 创建Dockerfile文件如下 # playywright 官方镜像 FROM mcr.microsoft.com/playwright:v1.37.0-jammy# 设置非交互式环境变量和时区 ENV DEBIAN_FRONTENDnoninteractive ENV TZEtc/UTC# 安装 Python 3.9 和 pip(修复时区阻塞问题) RUN apt-g…...
TCP/IP协议的应用层与传输层
TCP/IP协议簇是互联网的核心通信框架,定义了数据如何在网络中封装、寻址、传输和路由(确定数据包从源主机到目标主机的传输路径的过程)。 应用层 直接面向用户和应用,负责实现网络服务的具体功能(如网页浏览、文件传输…...
51c自动驾驶~合集15
我自己的原文哦~ https://blog.51cto.com/whaosoft/11720657 #DRAMA 首个基于Mamba的端到端运动规划器(新加坡国立) 运动规划是一项具有挑战性的任务,在高度动态和复杂的环境中生成安全可行的轨迹,形成自动驾驶汽车的核心能…...
拼多多 anti-token unidbg 分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 版本7.3-7.4 都试过加密没什…...
【Git】5 个分区的切换方式及示例
目录 1. **工作区(Working Directory)**2. **缓存区(Stage/Index)**3. **本地仓库(Local Repository)**4. **远程仓库(Remote Repository)**5. **贮藏区(Stash࿰…...
Java高频面试之并发编程-02
hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:进程和线程的区别是什么? 1. 资源分配与独立性 进程: 独立性:每个进程拥有独立的内存…...
openwebui和keycloak集成,使用keycloak的用户名和密码登录
1,实现效果 使用keycloak定义的用户名和密码,直接登录openwebui 2,实现原理 keycloak中用户信息中包含用户名和密码,以及email。 使用keycloak中的用户名和密码登录之后,会用email创建一个openwebui的账号。之后每次…...
html实现手势密码
<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>手势密码</title><style>body {font-fam…...
【区块链安全 | 第八篇】多签机制及恶意多签
部分参考:慢雾科技 文章目录 为什么需要多签多签机制Tron钱包下的恶意多签Tron 钱包多签权限分类Tron 多签机制的运作方式 恶意多签的过程黑客通过多签机制控制账户黑客剥夺用户权限,完全控制账户 恶意多签成因 在区块链中,多签(M…...
项目如何安装本地tgz包并配置局部registry
一、判断包来源是否正确 1. 检查url curl <registry_url>2. 查看包是否存在 npm view <package_name> --registry<registry_url>二、局部registry配置步骤: 1. 全局配置 如果你希望对所有项目生效,可以将这行配置添加到全局.npmr…...
二月公开赛Web-ssrfme
目录 环境搭建 题目分析 分析代码 解题过程 Redis未授权访问 寻找Flag 环境搭建 进入含有docker-compose.yml的文件内,拉取容器镜像 docker-compose up -d 题目分析 访问容器地址172.25.254.200:8091查看题目 分析代码 url通过GET请求访问界面,…...
JavaRedis和数据库相关面试题
JavaRedis面试题 1. Redis是什么以及Redis为什么快? Redis(Remote Dictionary Server)是一个开源的内存键值数据库,支持多种数据结构(如字符串、哈希、列表、集合等),并提供持久化、复制、…...
