SQL Server用户的设置与授权
SQL Server用户的设置与授权
SSMS 登陆方式有两种,一是直接使用Windows身份验证,二是SQL Server身份验证。使用SQL Server用户设置与授权不仅可以将不同的数据库开放给不同的用户外,而且可以提供一个通道给其他程序访问。

- 首先设置两个数据库,
test和aaa。实现创建一个pc用户,仅仅授权它访问test的功能

- 先对SSMS设置否则其默认是不提供给任何用户访问的。1、对数据库实例的属性进行设置:右键“数据库服务器”---属性---安全性,设置服务器身份验证=“SQL Server 和 Windows身份验证模式”,设置登录审核=“失败和成功的登录”,点击确定。


- 在SQL数据库中进行如下查询:
--创建账户:
--登录账户名:pc 密码:123456
--默认连接到的数据库:test
create login pc with password='123456',default_database=[test];
--此时,pc账户可以连接到SQL Server服务器上,但此时还不能访问数据库中的对象
--严格说,此时pc账户默认是guest数据库用户身份,可以访问guest能够访问的数据库对象
--指定数据库用户pc的默认模式是dbo
--相当于用户pc执行select * from t,实际上执行的是select * from dbo.t
--是查询补加dbo.前缀是为了与低版本SQL Server导过来的表相同
create user pc for login pc with default_schema=[dbo];
--在test数据库中,通过加入数据库角色,赋予数据库用户“db_owner”权限
--此时pc可以随意操作数据库test
use [test];
go
exec sp_addrolemember 'db_owner','pc';
go

该段SQL语句秉承微软数据库的所有传统,凡是涉及表名、数据库名都用 [ ] 表明,以免触发系统的关键字。
go 字段用于确保 use [test] 和 exec语句不分裂,否则 sp_adrolemember 这个SQL 保留的存储过程是无法执行的,找不到你所指定的数据库
关于dbo :dbo默认用户也是架构,dbo作为架构是为了更好的与2000兼容,这样2000中的代码移植到2005中就不会报错,dbo 在2005中是默认的架构,创建表时,如不指定架构则默认属于dbo为架构
- 执行后查看结果如下。在SSMS对象资源管理器--安全性--登录名中多了用户 pc 查看其属性--用户映射,可以看到test被用户pc映射,且其身份是db_owner,意即数据库拥有者。

- 但此时还不能用pc账号登录SQL。在服务器属性--连接---设置允许远程连接,在SQL Server配置管理器中允许TCP/IP 和 Named Pipes

- 重启,使用之前在sql语句中设置的用户名pc 和密码123456,选择 SQL Server 验证方式登录。

- 登录该账户后默认登陆在数据库test中,如果你要试图打开其他未授权数据库或者使用
use aaa;则会出现如下结果


- 删除账户。如果不需要这个pc账户了,可以在使用Windows身份验证登录SSMS后,执行以下代码,执行后pc就被删除了。
--删除数据库用户
drop user pc;
--删除 SQL Server 登录账户
drop login pc;
sa用户登录

安装SQL Server时设置了一个超级管理员 super administrator(sa),但在SQL Server中并不能像其他数据库的root账户一样直接用来登录。
若要使用 sa 来登录则必须进行如下设置:
- 设置 sa 的属性 允许登录

- 在属性--常规中,取消“强制实施密码策略”

- 使用sa账号和密码重新登录


SQL Server用户的设置与授权的更多相关文章
- 如何对SQL Server 2005进行设置以允许远程连接(转载)
如何对SQL Server 2005进行设置以允许远程连接(转载) 在尝试从远程计算机连接到 Microsoft SQL Server 2005 实例时,可能会接收到错误消息.在使用任何程序连接到 S ...
- SQL Server 2005中设置Reporting Services发布web报表的匿名访问
原文:SQL Server 2005中设置Reporting Services发布web报表的匿名访问 一位朋友提出个问题:集成到SQL Server 2005中的Reporting Services ...
- 2008 SQL SERVER 用户 架构
2008 SQL SERVER 用户: SERVER用户与数据库用户 SERVER 与 数据库用户的映射,以使 登陆用户可访问数据库 架构等同于SCHEM (表空间),即表空间管理对象,建立层次对象关 ...
- 应用C#和SQLCLR编写SQL Server用户定义函数
摘要: 文档阐述使用C#和SQLCLR为SQL Server编写用户定义函数,并演示用户定义函数在T-SQL中的应用.文档中实现的 Base64 编码解码函数和正则表达式函数属于标量值函数,字符串分割 ...
- 【关于服务器端SQL Server 2008的设置】 使其他客户端机可通过ODBC数据源可访问
服务器系统:Server 2003 数据库:SQL Server 2005 服务器配置:开启服务:server.workstation(这两个服务对于提供局域网共享有很大作用) 关闭防火墙 开启gue ...
- sql server 用户'sa'登录失败(错误18456)(转载)
转载地址:http://thenear.blog.51cto.com/4686262/865544 用户'sa'登录失败(错误18456)解决方案图解 当我们在使用sql server 的时候可能会遇 ...
- 定制Asp.NET 5 MVC内建身份验证机制 - 基于自建SQL Server用户/角色数据表的表单身份验证
背景 在需要进行表单认证的Asp.NET 5 MVC项目被创建后,往往需要根据项目的实际需求做一系列的工作对MVC 5内建的身份验证机制(Asp.NET Identity)进行扩展和定制: Asp.N ...
- SQL Server使用证书最小粒度授权
最近在项目中某个功能遇到了阻塞造成的Time out错误.所以需要在执行该功能的时候开启一个线程检测SQL Server中阻塞会话.但是程序本身使用的sql帐号本身不具备VIEW Sever Stat ...
- sql server 用户创建与权限管理
要想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权:一.获得准许连接 SQL Server 服务器的权利: 二.获得访问特定数据库中数据的权利(select, update, ...
- sql server 用户'sa'登录失败(错误18456)
转载于:http://thenear.blog.51cto.com/4686262/865544 用户'sa'登录失败(错误18456)解决方案图解 当我们在使用sql server 的时候可 ...
随机推荐
- R 绘制 GWAS 研究的 Manhattan 图
曼哈顿图本质上是一个散点图,用于显示大量非零大范围波动数值,最早应用于全基因组关联分析(GWAS)研究展示高度相关位点.它得名源于样式与曼哈顿天际线相似(如下图). 近几年,在宏基因组领域,尤其是差异 ...
- sqlmap工具学习
tryhackme:sqlmap github:https://github.com/sqlmapproject/sqlmap kali集成 参数介绍 sqlmap -h ___ __H__ ___ ...
- 【C#/.NET】Dapper使用QueryMultipleAsync执行多条SQL
目录 背景 解决方案 总结 背景 对于查询数据列表的功能,需要分页已经查询总数.这里涉及两句SQL,一个是查询分页对应的数据,第二个是Count(*); 会导致部分重复代码和两次的数据库查询. ...
- Subset Sum 问题单个物品重量限制前提下的更优算法
前言 看了 ShanLunjiaJian 关于这个问题的文章,是完全没看懂,沙东队爷的中枢神经内核配置把我偏序了.叉姐在下面提了个论文,论文找不到资源,谁搞到了可以 Q 我一份之类的拜谢了.然后找到了 ...
- Collection 接口及其常用方法
Collection 接口的特点 Collection接口没有直接实现类,提供了更具体的子接口(如Set和List)的实现.Collection实现类(通常通过其中一个子接口间接实现Collectio ...
- Cisco命令中login和login local的区别
login是开启远程登录密码验证,login local不但要求密码,还要求提供用户名 如果同时设置login和login local,login local有效 (config-line)#line ...
- Python中使用支付宝支付
准备 # 支付宝文档 https://opendocs.alipay.com/open/270/105898?pathHash=b3b2b667 # 在沙箱环境下实名认证 https://openho ...
- 深入JS——理解闭包可以看作是某种意义上的重生
JS中有一个非常重要但又难以完全掌握的概念,那就是闭包.很多JS程序员自以为已经掌握了闭包,但实质上是一知半解,就像"JS中万物皆为对象"这个常见的错误说法一样,很多前端开发者到现 ...
- JAVA代码下载TXT文件(本地和服务器上的代码都可以)
// 读取服务器文件内容(TXT文件测试可以) public static List<String> showTxt(String filePath) throws IOException ...
- YUM histoy 与 RPM -qa --last
查看Linux yum安装包的安装时间,可以使用以下命令: rpm -qa --last 该命令将显示已安装的所有rpm包及其安装日期和时间. 可以使用管道符 '|' 和 grep 命令来查找特定的包 ...