SQL Server的权限管理和数据恢复

一、SQL Server权限设置

SQL Server与其他服务器不同,通常保存着运营、开发、市场等重要数据,其中大量数据还涉及机密。因此掌握SQL Server的权限设置是DBA必备的关键技能。

1、SQL Server的安全机制

SQL Server的安全性是建立在认证和访问许可两种安全机制之上的。其中,认证是用来确定登录SQL Server的用户的登录账号和密码是否正确,以此来验证其是否具有连接SQL Server的权限;
访问许可用来授予用户或组能够在数据库中执行哪些操作,如创建表、查询数据等。

SQL Server的安全机制主要包括以下四个方面:

  • 客户机的安全机制;
  • 服务器的安全机制;
  • 数据库的安全机制;
  • 数据对象的安全机制;
  • 用户必须能够登录客户机,然后才能使用SQL Server应用程序或管理工具来访问数据库。对于使用Windows系统的客户来说,它主要涉及到操作系统的安全。主要是Windows账号的安全。
  • 用户登录服务器时,必须使用一个账号(也称为登录账号)和密码,服务器会按照不同的身份验证方式来判断这个账号和密码的正确性。
  • 任何能够登录服务器的账号和密码都对应着一个默认的数据库。SQL Server对数据库的权限管理采用的”数据库用户”的概念。
  • 用户通过前面三道防线后才能访问数据库中的数据对象,对数据对象能够做什么样的访问称为访问权限。常见的访问权限包括数据的查询、更新、插入和删除。

2、登录权限设置

1)SQL Server的身份验证方式

SQL Server有以下两种身份验证模式:
Windows身份验证模式;
SQL Server和Windows身份验证模式(混合验证模式);

①Windows身份验证模式

当使用Windows身份验证时,SQL Server会使用操作系统中的Windows用户密码。也就是说,用户身份由Windows进行确认。SQL Server不再提供密码,也不执行身份验证。Windows身份验证使用Kerberos安全协议。比SQL Server身份验证更为安全协议,比SQL Server身份验证更为安全,可以保护SQL Server免受大部分来自网络的非法操作。

Windows身份验证模式适用于局域网内部,访问数据库的情况。

②SQL Server和Windows身份验证模式

SQL Server和Windows 身份验证模式也称为混合验证模式。允许用户使用Windows身份验证或者使用SQL Server身份验证进行连接。该模式通常用于运行非Windows系统环境的用户、Internet用户或混杂的工作组用户访问SQL Server时。例如,外界用户访问数据库或不能登录Windows域时。

当使用SQL Server身份验证时,在SQL Server中创建的登录名并不是基于Windows用户账号的。用户名和密码通过使用SQL Server创建并存储在SQL Server中。如果必须使用SQL Server身份验证,必须为所有SQL Server账号启用密码策略,如强制密码过期、密码复杂度等。

在SSMS中设置服务器身份验证模式,方法如下:

打开SSMS,右击SSMS实例,在弹出的快捷菜单中选择“属性”命令

在打开的“服务器属性”窗口中选中“安全性”选项,可以设置身份验证模式

2)登录账户设置

通过使用SSMS可以创建和管理登录账户。在默认情况下,SQL Server使用Windows身份验证模式,SQL Server的登录账户无法登录。如果需要利用创建的SQL Server账户登录,需要将身份验证模式改为SQL Server和Windows身份验证模式

在SQL Server中,对SQL Server登录账户提供了以下安全策略:

  • 强制实施密码策略;
  • 强制密码过期;
  • 用户在下次登录时必须更改密码;

当新建SQL Server登录账号时,为了提高其安全性,建议选中“强制密码策略”复选框。

sa是SQL Server的默认管理员账号,由于该账号广为人知,容易成为恶意用户的非法操作目标,因此除非某些程序要求必须使用sa账号,否则建议禁用此账号。绝对不能将sa账号设置为空密码或弱密码,建议创建一个拥有与sa账户权限相同的超级用户来管理数据库。但是不能让拥有管理员权限的账号泛滥。

二、SQL Server访问许可权限设置

SQL Server中的访问许可可以分别从服务器、数据库及对象三个级别进行设置。

1、服务器级别的权限设置

在SQL Server中内置了一组服务器角色(也称为固定服务器角色),这些角色用来执行服务器级别的管理,如创建数据库、管理和审核登录账户、中止SQL Server实例中长时间运行的进程等。他们作用域整台服务器,而非单独某个数据库。SQL Server2016中的“角色”类似于Windows中的“组”。通过将不同的角色赋予不同的用户,用户可以具有不同的操作权限。

一个用户可以拥有多个固定服务器角色权限,但是固定服务器角色不能被修改、添加和删除。具体服务器角色及其能够执行的操作如下:

SQL Server中还有一个特殊的服务器角色public,所有登录名都属于该角色。该角色只拥有查看数据库的权限。

1)为用户分配服务器级别权限的具体步骤如下:

2、数据库级别权限设置

1)新建数据库用户

建立了SQL Server登录账户后,需要赋予用户权限,用户才能够对数据库进行查询与更新等操作。登录账户用户访问SQL Server实例,数据库用户则用于访问数据库。如果需要访问某个数据库,则需要在数据库中建立相应的数据库用户。

实际上,数据库用户是映射到登录账户上的。建立过程如下:

2)内置数据库用户

创建的任何一个数据库中默认包含两个特殊用户dbo和guest,且不能被修改和删除,如图:

  • dbo是数据库的所有者,对数据库具有所有权限。默认情况下,创建数据库的登录账号自动对应于数据库的dbo用户,dbo用户又属于db_owner数据库角色的成员,而db_owner数据库角色具有对数据库的全部权限。因此,可以说那个登录账户创建了数据库,这个登录账户就具备了该数据库的所有管理权限。此外,登录账户sa对应所有系统数据库的dbo用户。
  • guest是来宾用户,同样不可删除。guest用户不映射任何登录账户。所有没映射的登录账户都将以guest用户身份访问数据库。guest用户默认没有任何权限,且处于禁用状态,因此启用并授予权限时一定要慎重。

3)数据库角色

服务器角色主要控制服务器登录名在服务器范围内的访问,但是在设置具体数据库的管理和操作权限方面就显得权限太大了,因此需要依靠数据库角色对数据库级别的对象进行更加细化的权限划分。SQL Server默认提供了一组固定数据库角色,用来赋予用户操作数据库的权限,如查询数据表、备份和还原数据库等。固定数据库角色及其权限如下图:

  • 固定数据库还包含有一个名为public的角色,该角色用来捕捉数据库用户的所有默认权限,所有用户都属于public角色,该角色同样不可以被删除;
  • 数据控制语言包括GRANT和REVOKE;

为用户设置数据库级别权限的具体步骤如下:

根据自己需求自行配置选项即可

3、对象级别权限设置

一个数据库中通常包含多个数据表、视图、存储过程等对象,如果赋予了某个用户对数据库的读取权限,用户就可以读取该数据库下的所有表或视图等。

1)为表授权

SQL Server还提供了一些更细化的权限,如查询、插入或更新数据的权限等,这些权限可以作用于单个表上。常用的权限及其说明如下图:

在单个表上授予用户权限的具体步骤如下:


如果同时赋予了“授予”和“拒绝”权限,则“拒绝”权限的优先级高于“授予”权限。

2)为数据库授权

数据库本身也是对象,为数据库授权是,可以为其授予在数据库中创建其他各种对象的权限,如更改用户、创建表、查询数据等。

在单个数据库上授权用户权限的具体操作步骤如下:

三、SQL Server备份和还原

数据库管理员最担心的情况就是数据库瘫痪,造成数据丢失。而备份作为数据的副本,可以有效的保护和恢复数据。

1、为什么要备份

对于生产数据来讲,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果。通常,造成数据丢失的原因主要包括以下几类:

  • 程序错误;
  • 人为错误(如管理员误操作);
  • 计算机失败(系统崩溃);
  • 磁盘失败;
  • 灾难和盗窃;
    所以,数据库管理员的主要职责之一就是实施和规划一个妥善的备份和还原策略以保护数据库,避免由于各种故障造成损失而丢失数据,以在系统失效后尽快地恢复数据库。

2、备份类型

在SQL Server中提供了三种常用的备份类型,分别是完整备份、差异备份和事务日志备份。

1)完整备份

完整备份包括对整个数据库、部分事务日志、数据库结构和文件结构的备份。完成备份代表的是备份完成时刻的数据库。

完整备份是备份的基础,提供了任何其他备份的基准。其他备份(如差异备份)只有在执行完成备份之后才能被执行。

2)差异备份

差异备份是指对上一次完整备份之后所有更改的数据做备份,备份过程能够识别出数据库哪一部分被修改了,并只对这一部分做备份。

差异备份的优势是速度快、备份数据库所需要的时间很少,但差异备份要求事先执行一次完成备份。

3)事务日志备份

事务日志备份记录了数据库的所有改变。在备份事务日志时需要考虑以下因素:

  • 在执行了至少一次完成备份后,才能备份事务日志;
  • 在简单恢复模式下不能备份事务日志;
  • 如果没有与其一致的数据库备份,则不能恢复事务日志;

在执行数据库事务日志备份期间,SQL Server将做以下工作:

  • 备份事务日志:从上一次成功的事务日志备份到当前事务日志的尾部;
  • 截断事务日志:到事务日志活动部分的开始,丢弃不活动的部分;

此外,事务日志备份主要是SQL语句,而不是整个数据库结构、文件结构或数据。

3、恢复模式

不管是备份还是还原,都是在一定的恢复模式中进行的。恢复模式是数据库的一种特性、控制这数据库备份和还原的基本行为。书籍库管理员应根据企业系统实际运作的需求及对数据可用性和恢复的需求来选择合适的恢复模式。

SQL Server提供了三种恢复模式:简单模式、完整恢复模式和大容量恢复模式。

1)简单恢复模式

在简单恢复下,,不活动的日志将被删除,所以不支持事务日志备份,如下图所示,图中进行了一些数据库备份。在最近的备份t5之后的一段时间,此数据库中出现了数据丢失。数据库管理员将使用t5备份来讲数据库还原到备份完成的时间点,之后对数据库进行更改将丢失。

由于不支持事务日志备份、数据库只能恢复到备份的时间点,而无法将数据库还原到故障点或特定的时间点。因此,简单恢复模式主要用于小型数据库和不经常更改的数据库。

2)完整恢复模式

对于十分重要的生产数据库,在发生故障时可能要求恢复到历史上某个时刻。一旦发生故障时,必须保证数据不丢失,一旦发生故障时,必须保证数据不丢失,保证数据能够恢复到发生故障时的状态。这样,就必须采用完整恢复模式。

完整恢复模式可在最大范围内防止出现故障时丢失数据,它包括数据库备份和事务日志备份,并提供全面保护,使数据库免受媒体故障的影响。这个模式使用数据库和所有日志的备份区恢复数据库如果日志没有损坏,SQL Server可以恢复所有数据,除了在失败那一刻的事务。

由于支持事务日志备份,因此完整恢复模式可以将数据库恢复到任意一个指定的时间点。如图:

图中,能将数据库恢复到故障点,从而恢复所有数据,恢复操作可以还原所有已提交的事务,正在进行的事务将回滚。

3)大容量日志恢复模式

DBA在某些场合需要对数据库执行一些大批量的数据插入、更新或删除操作,如一次需要导入上百万条数据。如果在完整恢复模式下,那么这些操作将产生大量的日志记录,导致数据库性能很低。在这种环境下,可以采用大容量日志恢复模式来提高性能。

虽然大容量日志恢复模式会完整地记录其他事务,但它只对大容量操作进行最小记录。大容量日志恢复模式是对完整恢复模式的补充,提供了良好的性能,且占用较小的日志空间d.anshi,大容量日志恢复模式增加了这些大容量复制操作丢失数据的风险,因为最小日志记录大容量操作不会逐个记录书屋。

只要日志备份包含大容量操作,数据库就只能恢复到日志备份的结尾,而不能恢复懂啊某个时间点,或日志备份中某个标记的事务。

4)更改恢复模式

4、备份设备

在进行备份的时候,首先需要建立一个文件来存储备份的数据,这个备份文件就叫备份设备。

SQL Server使用物理备份设备和逻辑备份设备标识备份设备。

物理备份设备是操作系统用来表示备份设备的名称;比如:C:\Backups\Accounting\Full.bak。

逻辑备份设备是用户定义的别名,用来标识物理备份设备;逻辑备份设备永久地存储在SQL Server内的系统表中,使用逻辑备份设备的优点是引用它比引用物理设备名称简单。

四、备份和还原

1、数据库备份

2、数据库还原

———————— 本文至此结束,感谢阅读 ————————

原文地址:https://blog.51cto.com/14156658/2464549

时间: 2024-07-29 17:53:02

SQL Server的权限管理和数据恢复的相关文章

《SQL Server企业级平台管理实践》读书笔记——SQL Server如何设置自动增长和自动收缩项

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server如何设置自动增长和自动收缩项 SQL Server允许用户设置数据库初始值和最大值,可以通过自动增长或者自动收缩进行配置.通过这些配置,我们可以防止数据库空间问题而导致的应用程序修改失败或者SQL Server磁盘空间耗尽的事情发生.一般来讲,如果数据库不是很忙,默认的设置为自动增长,这种方式能够满足大部分的需求.但是在大量并发的情况下,申请数据文件和日志文件增长本身是一件非常消耗系统资源和影响性能的工作.所以如果

[译]SQL Passion Week 3: SQL Server的扇区管理

SQL Passion Week 3: SQL Server的扇区管理 混合扇区和统一扇区 SQL Server中每8个数据页作为一个扇区. 在混合扇区中, 其包含的8个页可以分别属于不同的数据库对象; 另一方面, 统一扇区里的8个页都属于同一个数据库对象. 为什么有这样一个区别呢, 这其实主要是因为一个历史遗留问题.  因为在上个世纪, 存储是非常昂贵的, 人们会尽可能有效的充分利用存储空间. 当一个表和索引最初创建时, 总是创建在一个混合扇区上, 先在8kb的空间里进行增长. 这样, 小的表

《SQL Server企业级平台管理实践》读书笔记——SQL Server中收缩数据库不好用的原因

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server中收缩数据库不好用的原因 数据库管理员有时候需要控制文件的大小,可能选择收缩文件,或者把某些数据文件情况以便从数据库里删除. 这时候我们就要使用到DBCC SHRINKFILE命令,此命令的脚本为: DBCC SHRINKFILE ( { file_name | file_id } { [ , EMPTYFILE ] | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATE

《SQL Server企业级平台管理实践》读书笔记——SQL Server数据库文件分配方式

原文:<SQL Server企业级平台管理实践>读书笔记--SQL Server数据库文件分配方式 1.文件分配方式以及文件空间检查方法 最常用的检查数据文件和表大小的命令就是:sp_spaceused 此命令有三个缺陷:1.无法直观的看出每个数据文件和日志文件的使用情况.2.这个存储过程依赖SQL Server存储在一些系统视图里的空间使用统计信息计算出的结果,如果没有更新空间统计信息,比如刚刚发生大数据插入,sp_spaceused的结果就不准确.3.这个命令主要是针对普通用户的数据库,对

《SQL Server企业级平台管理实践》读书笔记——几个系统库的备份与恢复

原文:<SQL Server企业级平台管理实践>读书笔记--几个系统库的备份与恢复 master数据库 master作为数据库的主要数据库,记录着SQL Server系统的所有系统级信息,例如登录用户.系统配置设置.端点和凭证以及访问其他数据服务器所需要的信息.master数据库还记录着启动服务器实例所需要的初始化信息,每个其它数据库的主文件位置.master数据库是SQL Server启动的时候打开的第一个数据库.SQL Server是从这个数据库里找到其它数据的信息的.如果master数据

SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)

SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE table_name ( column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size), .... ); 1.查看表 exec sp_help table1; 2.创建表 create tab

[MS-SQL] SQL Server 2008 组态管理工具出现:远端进程调用失败 0x800706be 解决方法

[MS-SQL] SQL Server 2008 管理工具出现"远端进程调用失败 0x800706be"解决方法 因为项目需求电脑装的 SQL Server 是使用 SQL Server 2008 Express 版本,而自从安装完 VS 2012 之后原本正常的 SQL Server 竟然立马坏了,又因为时间总是太少事情总是太多,所以一直拖到最近才来找问题,不要问我那我工作怎办!因为至少 SQL 连远端的部分还是正常的! 问题由来 因为项目需求电脑装的 SQL Server 是使用

SQL Server权限管理和数据恢复

SQL Server的身份验证方式有两种:Windows身份验证:使用Windows身份验证时,SQL Server会使用操作系统中的Windows用户密码,进行验证.这种验证模式适用于局域网内部,访问数据库时.这种方式安全.登录速度快.SQL Server和Windows 身份验证模式:也称为混合验证模式.允许用户使用Windows身份验证或者使用SQL Server身份验证进行连接.该模式通常用于运行非Windows系统环境的用户.Internet用户或混杂的工作组用户访问SQL Serve

《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式

数据备份一直被认为数据库的生命,也就是一个DBA所要掌握的主要技能之一,本篇就是介绍SQL Server备份原则,SQL Server数据库分为数据文件和日志文件.为了使得数据库能够恢复一致点,备份不仅需要拷贝数据数据文件里的内容,还要拷贝日志文件里的内容.那么根据每次备份的目标不同,我们可以将备份分为数据备份和日志备份. 数据备份的范围可以是完整的数据库.部分数据库.一组文件或文件组.所以根据备份下来的数据文件的范围,又分为了完整数据库备份.文件备份和部分备份. 完整数据库备份 完整数据库备份