SQLServer权限
用户的权限分为3类:
l 登录的权限;
l 访问特定数据库的权限;
l 在数据库中具体的对象上执行特定操作的权限。
用户分为 服务器登陆与数据库用户,两者进行关联
角色分为:
服务器角色(固有,不可删改,不可增加自定义);
数据库角色(固有,不可删改、可增加自定义角色);
查询所有用户:
select * from sysusers;(数据库用户)
select * from master.dbo.syslogins;(登陆用户)
查询账户信息;
sp_helplogins 'TestAccount';
添加一个用户:
方法一:
exec sp_addlogin 'test','123' ;--//创建一个登录帐号
execute sp_addgroup 'testgroup' ;--//创建一个组
execute sp_adduser 'test','123','testgroup';--//把帐号添加到组中
方法二:
-- 添加服务器登陆
EXEC master.dbo.sp_addlogin @loginame = N'logintest', @passwd = '111',
@defdb = N'DBTEST', @deflanguage = N'简体中文'
--设置登陆的角色
EXEC master..sp_addsrvrolemember @loginame = N'logintest', @rolename = N'sysadmin'
GO
--一个登陆
--可以在多个数据库上创建用户
--但不能在一个数据库上创建多个用户
--为登录 logintest 在数据库 dbtest 中添加安全账户 usertest
use dbtest
go
EXEC dbo.sp_grantdbaccess @loginame = N'logintest', @name_in_db = N'usertest'
-- 为用户设置数据库角色
-- sp_addrole可以添加自定义的数据库角色
EXEC sp_addrolemember N'db_datareader', N'usertest'
GO
EXEC sp_addrolemember N'db_datawriter', N'usertest'
GO
--以上设置用户logintest只能登陆dbtest数据库,但是我们却可以访问master,pubs等数据库
--这是因为,那些数据库里有个guest用户,guest用户可以与没有设置用户的登陆名关联
--即logintest在master库上没有设置关联用户,就使用了guest用户
-- 删除数据库用户 ,删除登陆前必须删除登陆的所有数据库用户
IF EXISTS (SELECT * FROM dbo.sysusers WHERE name = N'usertest')
EXEC dbo.sp_revokedbaccess N'usertest'
go
-- 删除登录 ,删除登陆前必须删除登陆的所有数据库用户
IF EXISTS (SELECT * FROM master.dbo.syslogins WHERE name = N'logintest')
EXEC master.dbo.sp_droplogin @loginame = N'logintest'
go
----自定义角色的做法
--创建角色 r_test
EXEC sp_addrole 'r_test'
--授予角色 r_test 对 jobs 表的所有权限
GRANT ALL ON jobs TO r_test
--授予角色 r_test 对 titles 表的 SELECT 权限
GRANT SELECT ON titles TO r_test
--添加登录 l_test,设置密码为pwd,默认数据库为pubs
EXEC sp_addlogin 'l_test','pwd','pubs'
--为登录 l_test 在数据库 pubs 中添加安全账户 u_test
EXEC sp_grantdbaccess 'l_test','u_test'
--添加 u_test 为角色 r_test 的成员
EXEC sp_addrolemember 'r_test','u_test'
--拒绝安全账户 u_test 对 titles 表的 SELECT 权限
DENY SELECT ON titles TO u_test
/*--完成上述步骤后,用 l_test 登录,可以对jobs表进行所有操作,但无法对titles表查询,虽然角色 r_test 有titles表的select权限,但已经在安全账户中明确拒绝了对titles的select权限,所以l_test无titles表的select权限--*/
--从数据库 pubs 中删除安全账户
EXEC sp_revokedbaccess 'u_test'
--删除登录 l_test
EXEC sp_droplogin 'l_test'
--删除角色 r_test
EXEC sp_droprole 'r_test'
---------------------------------
--sql server 2005里可以有create用法
USE [master]
GO
CREATE LOGIN [logintest] WITH PASSWORD=N'111111', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=ON
GO
USE [db]
GO
CREATE USER [logintest] FOR LOGIN [logintest]
GO
USE [db]
GO
EXEC sp_addrolemember N'db_denydatareader', N'logintest'
GO
USE [db]
GO
EXEC sp_addrolemember N'db_denydatawriter', N'logintest'
GO
--服务器角色
添加系统管理员:
master.dbo.xp_cmdshell' net user liujiayu 123456 /add ';
master.dbo.xp_cmdshell' net localgroup administrators liujiayu /add
出现错误执行:
;EXEC sp_configure 'show advanced options', 1 --
;RECONFIGURE WITH OVERRIDE --
;EXEC sp_configure 'xp_cmdshell', 1 --
;RECONFIGURE WITH OVERRIDE --
;EXEC sp_configure 'show advanced options', 0 --
各种错误的总结:
grant 关键字 'to' 附近有语法错误
sql server 2005 开发版
输入语句
grant select
on table person
to ma
消息:消息 156,级别 15,状态 1,第 3 行
关键字 'to' 附近有语法错误。
正解:
grant select
on person
to ma
SQLServer权限相关推荐
- 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】05、Shiro集成
1.POM文件中加入Shiro和fastJSON依赖 <dependency><groupId>org.apache.shiro</groupId><arti ...
- 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】04、统一处理异常...
本节讨论如何使用Spring的异常处理机制,当我们程序出现错误时,以相同的一种格式,把错误信息返回给客户端 1.创建一些自定义异常 public class TipsException extends ...
- discuz!nt论坛搬迁后出错,提示:对象名 'dnt_templates' 无效
2007年10月30日 星期二 16:23 对象名 'dnt_templates' 无效解决方法: --解决重装系统并还原论坛数据库后,数据库帐号不关联的问题. --注意请用sa帐号 进行如下操作 - ...
- SQL Server应用程序中的高级SQL注入
作者:不详 来源:techtarget http://www.csai.cn 2006年5月11日 摘要:这份文档是详细讨论SQL注入技术,它适应于比较流行的IIS+ASP+SQLSERVER平台.它 ...
- SQL Server应用程序中的高级SQL注入[转]
SQL Server应用程序中的高级SQL注入[从A.Z的POST里转载,经过整理] 作者:Chris Anley[chris@ngssoftware.com] An NGSSoftware Insi ...
- 渗透测试-注入攻击专题
渗透测试- 注入 Neo4j ACCESS ORM注入 SSTI 服务器端模板注入(Server-Side Template Injection) 万能密码 漏洞介绍 测试方法 sql手工注入 @ap ...
- pythonDjango后端笔记
文章目录 软件开发架构 纯手撸web框架 借助于wsgiref模块 动静态网页 模块语法之Jinja2模块 自定义简易版本web框架请求中各个模块的作用 python3大主流web框架 注意事项 Dj ...
- sqlserver 新建只读权限用户
1,新建只能访问某一个表的只读用户. --添加只允许访问指定表的用户: execsp_addlogin'用户名','密码','默认数据库名' --添加到数据库 execsp_grantdbaccess ...
- SQLServer · 最佳实践 · RDS for SQL Server 2012 权限限制的提升与改善
title: SQLServer · 最佳实践 · RDS for SQL Server 2012 权限限制的提升与改善 author: 石沫 背景 SQL Server 作为一种强大的关系型数据库, ...
最新文章
- Xilinx Axi Dma Userspace模式下 寄存器 +MMAP 测试程序
- python astype(float)_Python astype(np.float)函数使用方法解析
- 杭电acm2015偶数求和
- Ubuntu 下的云笔记Nixnote (Evernote)
- 云服务器(uCloud)部署java web项目(二) 安装,配置apache服务器
- 用ntdsutil命令中的restore object 更新版本号
- spark on yarn 完全分布式_「大数据」(七十一)Spark之架构介绍
- maven 构建 springmvc + spring security 权限控制示例
- linux 文件指针,Linux中文件描述符fd与文件指针FILE*互相转换实例解析
- java解析tcp报文_JAVA语言TCP通信和JDBC示例(AIS信息解析)
- squid android 工具包,xUtils Android工具包 v3.9.0
- 数据可视化之旅(五):常用图表对比
- 深度学习算法:AlphaGo 算法
- 猿创征文 | 2022 我的开发者工具
- 广州坐标系转换大地2000_实用帖 | 从地方坐标系到2000国家大地坐标系的转换方法...
- 国家集训队 矩阵乘法
- python 残差图_python 残差
- 零点起飞学java web_零点起飞学Java Web开发 (徐林林) 高清PDF扫描版 114M
- python:烤地瓜程序
- from PyQt6 import QtCore, QtGui, QtWidgets ImportError: DLL load failed while importing QtGui: