【数据库原理】实验三 数据保护

  • 实验目的和要求
    1. 掌握简单数据库备份与还原;
    2. 掌握SQL的用户、角色和权限控制;
    3. 掌握SQL的完整性约束
  • 实验内容

1、数据库还原

操作步骤:

  • 在“对象资源管理器”中右键单击“数据库”节点并在弹出菜单中选择“还原数据库”
  • 在“还原数据库”窗口中设置数据库的名称。
  • 下一步,指定还原的源。此处,选择“源设备”。

2、创建登录用户

  • 使用对象资源管理器创建通过SQL Server身份验证模式的登录,其中登录名为login01,密码为passwd01,默认数据库为CAP,其他保持默认值。

提示:进入对象资源管理器,展开“服务器”®“安全性”®“登录名”,右击“登录名”项,在弹出的菜单中选择“新建登录名”选项。

  • 使用系统存储过程sp_addlogin创建登录,其登录名称为login03密码为passwd03,默认数据库为CAP。在SQL编辑器窗口中输入和执行语句,并在对象资源管理器中显示结果。

EXEC sp_addlogin 'login03','passwd03','CAP'

  • 使用对象资源管理器删除登录用户login01和login02。

提示:进入对象资源管理器,展开“服务器”®“安全性”®“登录名”,右击欲删除的登录帐号,在出现的快捷菜单中单击“删除”

  • 使用系统存储过程sp_droplogin从SQL Server中删除登录用户login03。在SQL编辑器窗口中输入和执行语句,并在对象资源管理器中显示结果。

EXEC sp_droplogin 'login03'

3、创建和管理数据库用户

  • 创建登录名为u01、密码为passwd01、默认数据库为CAP并能连接到CAP数据库的用户。

EXEC sp_addlogin 'u01','passwd01','CAP'

USECAP

EXEC sp_grantdbaccess 'u01','u01'

  • 创建一个新用户U02。

4、无论用以上哪种方法创建新用户完毕后,在新用户上右键选择属性

取消强制实施密码策略的勾选

并在用户映射中选择你想要映射的数据库

5、修改数据库登录方式   

       在安全性选项卡中修改服务器验证方式

6、服务器重启

7、管理权限

把查询、插入表customers和修改cid的权限授予用户u01

grant select,insert,update(cid) on customers to u01;

把对表orders的所有操作权限授予用户u01

Grant all privileges on orders to u01;

把对表customers的查询权限授予所有用户

GRANT SELECT ON TABLE SC TO Public

把对表agents的插入权限授予用户u01,并允许将此权限再授予其他用户

Grand insert on agents to u01 with grant option

以新用户U01的身份登录并向customers表插入数据

以新用户U01的身份登录并将对表agents的插入权限再授予u02

以用户U02身份登录向agents表中插入数据

以DBA的身份登录并把用户u01对agents表的插入权限撤销

Revoke insert

On agents

From u01

DBA把在数据库CAP中建立表的权限授予用户u01

Grant create table to u01

以u01的身份登录并在CAP中创建新表。

8、完整性控制

以DBA身份登录并在orders表中插入新行。

Insert intoordersvalues('1025', 'may', 'c007','a01','p02',1000,450);

执行结果是什么?原因是什么?

要求customers表中的discnt值不高于15.0

Alter table customers

Add constraint discnt_max check (discnt<=15.0)

;

执行以下语句,查看执行结果,并分析原因。

Update customers set discnt=20 where cid='c002';

要求orders表中qty列的值必须大于或等于0。

Alter tableorders

Add constraintqtyckcheck (qty>=0),constraintdollarsckcheck (dollars>=0);

定义CAP数据库中的参照完整性。

Alter tableorders

Add constraintcidrefforeign key(cid) referencescustomers,

constraintaidrefforeign key(aid) referencesagents,

constraintpidrefforeign key(pid) referencesproducts;

思考题

  1. 什么是数据库角色?如何创建和管理数据库角色?试举例说明。
  2. 以上的主码、外码和用户自定义约束如果是在创建表的同时定义,应该如何定义?请重写create table语句。

Create table customers

(cid char(4) not null,

cname varchar(13),

city varchar(20),

discnt real constraint discnt_max check(discnt<=15.0),

primary key(cid));

Create table orders

(ordno integer not null,

month char(3),

cid char(4) not null,

aid char(3) not null,

pid char(3) not null,

qty not null constraint qtyck check (qty>=0),

primary key (ordno),

constraint cidref foreign key(cid) references customers,

constraint aidref foreign key(aid) references agents,

constraint pidref foreign key(pid) references products);

出现问题及解决方案

附录

SQL Server帐号有两种:一种是服务器的登录帐号,另一种是数据库的用户帐号。登录帐号是指能登录到SQL Server服务器的帐号,它并不能让用户访问服务器中的数据库。而持登录帐号的用户要访问数据库中的数据库时,必须要有用户帐号。如同企业门口先刷卡进入(登录服务器),然后再拿钥匙打开自己的办公室(进入数据库)一样。

有了登录帐号就有了登录到SQL Server服务器的能力,所有的登录帐号信息都被存放在系统表syslogins中。用户帐号与用户数据库相关,数据库中对象的全部权限和所有权由用户帐号控制。登录帐号不能提供访问数据库对象的权限,当一个登录帐号与用户数据库中的一个用户帐号相关联后,使用该登录帐号连接SQL Server服务器,才能访问数据库中的对象。用户帐号是由SQL Server管理的,所有的用户帐号都存放在系统表sysusers中。

注意:用户帐号要在特定的数据库内创建,并关联一个登录帐号。

猜你喜欢

转载自blog.csdn.net/CE00001/article/details/130163160