一、登录权限:
sql server的身份验证模式有以下两种:
1、 Windows身份验证模式:
当使用Windows身份验证时,sql server会使用操作系统中的Windows用户和密码。也就是说,当用户身份由Windows进行验证,sql server不要求提供密码,也不执行身份验证。Windows身份验证是比sql server身份验证更为安全的,可以保护sql server免受大部分来自Internet的 攻 击。Windows身份验证适合用于在局域网内部(如AD域)访问数据库的情况。需要注意的是:使用Windows身份验证时,也必须把相应的用户账号添加到数据库的登录名列表中,否则还是会登录失败,如下所示:
2、 sql server 和Windows身份验证模式(混合模式):
sql server和Windows身份验证模式也被称为混合模式,允许我们使用Windows身份验证或sql server身份验证进行连接。这种模式通常用于运行在非Windows系统环境的用户、Internet用户或混杂的工作组用户访问sql server时,比如说:外界用户访问数据库或不能登录Windows域时,sql server验证模式的话,所使用的账号和密码是储存在sql server数据库上的,与客户机的用户没有关系。
二、数据库的权限设置:
sql server中的访问权限可以分别从服务器、数据库及对象三个级别进行设置。
可以把SOL Server 想象为一幢大楼,要进入这幢大楼需要一张通行证, 这就是登录账户,而这张通行证的类型(内部员工还是来宾)能否进入大楼,主要取决于保安的检 查方式(即身份验证模式).数据库则可以想象为大楼中的房间,进入大楼之后还不可以访问每个房间,要访问哪个房间还需要哪个房间的钥匙,这就是数据库用户。最后,每个房间里都包含一些对象(如椅子,计算机.铅笔等),可以把它们想象为数据库中的表,并不是每个进入房间的人都有权使用这些对象。这些对象以架构为单位,可以分配用户权限去访问架构, 通过架 构可以访问架构下的所有对象。
当然,如果是这幢大楼的房间拥有者,那么他可以拥有房间内的任何对象,甚至可以让别人去使用这些对象。
1、服务器级别权限设置
在SOL Server 2016中内置了一组服务器角色(也称为固定服务器角色),这些角色用来执行服务器级别的管理,如创建数据库,管理和审核登录账户、 中止sql Server实例中长时间运行的进程等,它们作用于整台服务器,而非单独某个数据库。
一个用户可以拥有多个固定服务器角色权限,但是固定服务器角色不能被修改、添加和删除。服务器角色如下所示:
2、数据库级别权限设置:
创建任何一个数据库中默认包含两个特殊用户 dbo(database owner)和guest,前者为数据库的所有者,对该数据库具有所有权限;后者是来宾账户,不能被删除,默认处于禁用状态且不具备任何权限。一般要慎重启用guest账号并授予权限。
服务器角色主要控制服务器登录名在服务器范围内的访问,但是在设置具体数据库的管理和操作权限方面就显得比较大了,因此需要依靠数据库角色对数据库级别的对象进行更加细化的权限划分。sql server默认提供的数据库角色如下所示:
固定数据库角色还包含一个名为public的角色,该角色用来捕获数据库中用户的所有默认权限,所有用户和角色默认属于public角色,该角色不能被删除。
3、对象级别权限设置:
一个数据库中通常包含多个数据表、视图、存储过程等对象,如果赋予了某个用户对该数据库的读取权限,用户就可以读取该数据库下所有表或试图等。但是,如果只想让用户拥有查询某个对象的权限,就需要进行对象级别的权限设置了,下图是为表授权的一些常用权限及其说明: