南京邮电大学数据库实验二(DBMS的数据库保护)

news2024/11/23 13:06:04

文章目录

  • 一、实验目的和要求
  • 二、实验环境(实验设备)
  • 三、实验原理及内容
    • (1) DBMS的数据库保护功能
    • (2) 安全控制中的访问控制机制
    • (3) 事务的提交与回滚
    • (4) 并发控制的锁机制
  • 三、实验内容
    • 1.以root账户登录数据库管理系统,创建用户U1和U2,密码自定。
    • 2.创建数据库test2,在test2中创建emp表,并输入一些数据记录,如下图要求所示:
    • 3.对emp表,用授权机制完成以下存取控制,并验证存取控制是否实现。
    • 4.观察多事务并发时的数据库保护,同时查看两个用户窗口。
  • 四、实验小结(包括问题和解决方法、心得体会、意见与建议等)
    • (一)实验中遇到的主要问题及解决方法
    • (二)实验心得
    • (三)意见与建议(没有可省略)

一、实验目的和要求

(1) 巩固事务的概念
(2) 正确理解并发及锁机制
(3) 熟悉DBMS的安全控制

二、实验环境(实验设备)

硬件:微型计算机
软件:DBMS产品任选

三、实验原理及内容

实验原理基于第4章、第10章以及第11章的相关内容。

(1) DBMS的数据库保护功能

DBMS的数据库保护功能包括:安全控制、完整性控制、并发控制、备份与恢复等。 后两项都属于事务管理。安全控制防止非法用户对数据库的访问和破坏;完整性控制防止合法用户错误地操作数据库;事务是DBMS的最小执行单位,由有限的操作序列组成,事务的执行和调度要满足ACID(原子性、一致性、隔离性和持久性)准则;并发控制使得ACID在多事务并发时仍得到满足;备份与恢复使得ACID在故障时仍得到满足。完整性控制已在实验一中体现,本实验重点体会安全控制和并发控制。

(2) 安全控制中的访问控制机制

用户和权限是访问控制机制的两个主要概念。
三类用户:一般数据库用户(connect)、具有支配部分数据库资源特权的数据库用户(resource)和具有数据库管理员特权的数据库用户(DBA),只有DBA具有创建用户的权力。
两大类权限:系统权限和对象权限。系统权限由DBA授予;对象权限是对数据对象的操作权,由DBA或对象的拥有者授予。
授权语句:权限的授予(GRANT)、转授(WITH GRANT OPTION)、回收(REVOKE)。

(3) 事务的提交与回滚

事务中的提交(COMMIT)是提交事务的所有操作。具体说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。
事务中的回滚(ROLLBACK)是数据库回到事务开始时的状态。具体地说就是,
实 验 报 告
在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤消,使数据库回滚到事务开始时的状态。

(4) 并发控制的锁机制

并发控制的锁机制:先加锁,后操作;常用的锁类型:X(排他型)、S(共享型)。
在一个事务拥有某个数据的X锁期间,其它事务不能对此数据做任何操作。
当某事务拥有某个数据的S锁期间,允许其它事务读(select)此数据,不允许任何更新。

三、实验内容

1.以root账户登录数据库管理系统,创建用户U1和U2,密码自定。

CREATE USER U1 IDENTIFIED BY 'U1';
CREATE USER U2 IDENTIFIED BY 'U2';

SELECT USER FROM mysql.USER;

在这里插入图片描述

2.创建数据库test2,在test2中创建emp表,并输入一些数据记录,如下图要求所示:

在这里插入图片描述

图1 emp表结构在这里插入图片描述
图2 emp表中记录

CREATE TABLE emp(
    EMPNO INT,
    ENAME varchar(10),
    JOB VARCHAR(9),
    MGR DOUBLE,
    HIREDATE DATE,
    SAL DOUBLE,
    COMM DOUBLE,
    DEPTNO INT,
    PRIMARY KEY (EMPNO)
);

INSERT INTO emp VALUES (7369, 'SMITH',  'CLERK',    7902, '1980-12-17', 800,    NULL,   20);
INSERT INTO emp VALUES (7499, 'ALLEN',  'SALESMAN', 7698, '1981-02-20', 1600,   300,    30);
INSERT INTO emp VALUES (7521, 'WARD',   'SALESMAN', 7698, '1981-02-22', 1250,   500,    30);
INSERT INTO emp VALUES (7566, 'JONES',  'MANAGER',  7839, '1981-04-02', 2975,   NULL,   20);
INSERT INTO emp VALUES (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250,   1400,   30);

SELECT * FROM emp;

在这里插入图片描述

3.对emp表,用授权机制完成以下存取控制,并验证存取控制是否实现。

(1) 授予用户U1和U2具有对emp表的员工编号empno、姓名ename和所在部门deptno的查询权限。

 # (1) 授予用户 U1 和 U2 具有对 emp表 的员工编号 empno、姓名 ename 和所在部门 deptno 的查询权限。
GRANT SELECT(EMPNO, ENAME, DEPTNO) ON test.emp TO U1;
GRANT SELECT(EMPNO, ENAME, DEPTNO) ON test.emp TO U2;

在这里插入图片描述

(2) 使用户U1拥有对emp表的删除权限和对奖金(comm)的修改权限,并具备转授这些权限的权力。

# (2) 使用户 U1 拥有对表 EMP 的删除权限和对奖金(COMM)的修改权限,并具备转授这些权限的权力。
GRANT DELETE, UPDATE(COMM) ON emp TO U1 WITH GRANT OPTION;

在这里插入图片描述

(3) 用户U1授予用户U2对emp表的删除权限。

# (3) 用户 U1 授予用户 U2 对 emp表 的删除权限。
GRANT DELETE ON emp TO U2;

在这里插入图片描述

(4) 分别以用户U1和U2身份登录,自行设计操作用例验证(1)- (3)设置的权限。
①验证用户U1具有对emp表的员工编号empno、姓名ename和所在部门deptno的查询权限。


# 验证用户 U1 具有对 emp表 的员工编号 empno、姓名ename 和所在 部门deptno 的查询权限。
SELECT EMPNO, ENAME, DEPTNO FROM emp;

②验证用户U2具有对emp表的员工编号empno、姓名ename和所在部门deptno的查询权限。


# 验证用户 U2 具有对 emp表 的员工编号 empno、姓名ename 和所在 部门deptno 的查询权限。
SELECT EMPNO, ENAME, DEPTNO FROM emp;

③验证U1拥有对emp表的删除权限和对奖金(comm)的修改权限

 # 验证用户U1授予用户U2对emp表的删除权限。
SHOW GRANTS FOR U2;

④验证用户U1授予用户U2对emp表的删除权限。

# 验证用户U1授予用户U2对emp表的删除权限。
SHOW GRANTS FOR U2;

(5) 回收用户U1和用户U2对emp表的删除权限。

(6) 分别以用户U1和U2身份登录,自行设计操作用例验证(4)设置的删除权限的回收。
①验证删除权限的回收

3.为用户U1授予对emp表的所有操作权限。

## 为用户U1授予对emp表的所有操作权限。
GRANT ALL PRIVILEGES ON EMP TO U1 WITH GRANT OPTION;

在这里插入图片描述

4.观察多事务并发时的数据库保护,同时查看两个用户窗口。

(1) 在root窗口和U1窗口都设置:关闭自动提交,启用事务。

(2) 在root中将emp表中30号部门所有员工的工资 (sal)增加200元,此即事务1。
在这里插入图片描述

(3) 在root中查询7521号员工的sal。
在这里插入图片描述

(4) 在U1中将emp表中的工号以75开头的员工工资增加300元,此即事务2。
在这里插入图片描述
在这里插入图片描述

(5) 在root中确认提交结束事务1。
在这里插入图片描述

(6) 在U1中确认提交结束事务2。
在这里插入图片描述

(7) 在两个窗口使用select语句查看sal值的变化。

在这里插入图片描述在这里插入图片描述

(8) 使用rollback命令进行测试:数据回退,用于反复测试。
在这里插入图片描述

四、实验小结(包括问题和解决方法、心得体会、意见与建议等)

(一)实验中遇到的主要问题及解决方法

在创建用户U1,U2时出错,切换root后重新创建。

(二)实验心得

学会了多用户修改数据库

(三)意见与建议(没有可省略)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 入门教程(简单全面版)

1 安装: 1.1 生产环境安装 注意: 1、如果安装过程有问题可以参考源代码中的 README.md 文件 2、如果服务器只安装一个 redis 通常选择 /usr/local/redis 作为安装目录,如果安装多台则建议带上 服务名称 区分(建议带上 服务名称 区…

jvm-狂神课程

一、JVM JVM就是Java虚拟机,Java虚拟机就是JVM 1. JVM位置 1、Java程序(跑的环境是在jvm(虚拟机)跑的,也可以说是在jre上跑的)java运行是需要在特定的环境的也就是这个jre这种。 2、jvm(也就是…

别不信:这些细节关乎你的物联网设备的命运!

《高并发系统实战派》-- 值得拥有 一、设备接入层网络协议的意义 随着物联网的发展,越来越多的设备需要接入云平台进行远程监控和管理。设备接入层网络协议起到了承担设备接入网络的功能,为物联网平台提供了数据交互的基础。设备接入层网络协议对于物联…

【C++ 入坑指南】(01)学习路线

入门 1. 推荐书籍 《Accelerated C》,《Essential C》二选一精读。《A Tour of C》选读。 《Accelerated C》很适合新手,因为只有短短不到 300 页,在普遍一样的入门书籍里面是一股清流。容易通读完,减少挫败感。就这样的篇幅&am…

【每天学习一点新知识】如何绕过CDN查真实ip

1、什么是CDN 为了防止流量过大网络堵塞,我们就在靠近用户的地方,建一个缓存服务器,把远端的内容复制一份,放在这里,简单来说就是将内容缓存在终端用户附近。 2、怎么绕过cdn找到远端服务器的真实ip呢? &…

FS2462是泛海微自主开发的5A降压型同步整流芯片

FS2462是泛海微自主开发的5A降压型同步整流芯片,是国内首家大电流同步5A芯片,内部集成极低RDS内阻20豪欧金属氧化物半导体场效应晶体管的(MOSFET)。输入工作电压宽至4.75V到21V,输出电压1.0V可调至20V。5A的连续负载电流输出可保证系统各状态…

Landing AI:计算机视觉数据标注AI平台

【产品介绍】 Landing AI是一家由人工智能领域的知名专家、Coursera联合创始人、前百度首席科学家、Google大脑创始负责人吴恩达博士创立的公司,旨在为各行各业提供先进的计算机视觉解决方案。 Landing AI的核心产品是LandingLens,一个基于云端的计算机视…

前端开发代码规范工具

规范化是前端工程化的一个重要部分。现在,有许多工具能够辅助我们实行代码的规范化,比如你一定知道的 ESLint 和 Prettier。 今天,来聊聊这些工具的工作原理和基本使用,了解它们是如何发挥作用的,以及如何更好地利用这些工具去规…

AI成功破译古老未知语言,人工智能技术开辟历史研究新时代

近年来,人工智能在各个领域取得了突飞猛进的发展,成为了当今社会讨论的热点。尽管有关其使用的争议不断,但AI技术在某些方面的作用已经不容忽视。 最近,以色列特拉维夫大学和阿里尔大学的研究者们联手研发了一款能够破译古老未知…

Nature:刘清华团队揭示调控睡眠时间的关键分子通路

导读 你能做到一周不睡觉吗?良好的睡眠对我们保证生活质量十分重要。不过,有些人每天只需睡4-6个小时,有些人则需要8个小时(可能还不够),这是什么原因导致的? 其实,这也是很多科学…

阿里云服务器镜像是什么意思?

阿里云服务器镜像是云服务器的装机盘,镜像是为云服务器安装操作系统的。云服务器镜像系统怎么选择?云服务器操作系统镜像分为Linux和Windows两大类,Linux可以选择Alibaba Cloud Linux,Windows可以选择Windows Server 2022数据中心…

怎样恢复删除的视频?这5个方法才是正确答案!

案例:怎样恢复删除的视频? 【我是个视频爱好者,平常会在电脑中存很多视频,但也经常会将很多视频误删,怎样恢复删除的视频呢?希望大家给我一些建议!】 在摄影摄像技术较发达的今天,…

cond conv 代码-思想

参考博客: 1 解析图示最清楚动态卷积之CondConv思想和代码实现_&永恒的星河&的博客-CSDN博客 2 知乎的解释,简洁明了CondConv代码解析 - 知乎 知乎提供code:External-Attention-pytorch/CondConv.py at master xmu-xiaoma666/Extern…

详解MySQL索引失效

目录 B树结构 测试数据 索引失效的情况 没有用到索引 违反左前缀原则 范围查询断索引 like需要分情况 结果数据超过半数 B树结构 索引失效的根本原因其实就是违反了B树的结构特性,查找的时候没办法在B树上继续走下去,所以首先我们来回顾一下B树…

进程控制(中)

目录: 1.status获取子进程退出的退出码和信号 2.不进行位操作方式获取子进程的退出码和信号 3.waitpid 第三个参数options ------------------------------------------------------------------------------------------------------------------------------- 1.…

工业4.0,为什么数字化转型这么难,上了ERP还要上MES

工业4.0时代,中国制造企业已经面临着与国际先进水平的差距,更多的企业在寻找新的发展道路,数字化转型是制造业企业转型升级的必由之路。但是,许多制造型企业由于在传统生产过程中,业务数据不能得到有效监控、生产过程数…

人脸修复增强调研

Real-ESRGAN 工程地址:https://github.com/xinntao/Real-ESRGAN 效果: 人脸增强部分,调用的GFPGAN. GFPGAN 工程地址:https://github.com/TencentARC/GFPGAN 论文效果: BasicSR-ESRGAN: 项目地址&a…

巨杉数据库荣获新睿之星,赋能大湾区技术与产业升级

巨杉数据库凭借多年深耕分布式数据库的技术积累和创新能力,于广州投资年会上荣获新睿之星奖项,该奖项不仅是对巨杉数据库的肯定,也充分肯定广州培育本土高新企业的发展成果。 4月18日,2023年第九届广州国际投资年会在广州白云国际…

2023年10大最佳「内容日历」软件工具

随随便便运行一个社交媒体策略就能成功,这几乎是不可能。你需要提前规划排期,收集资源并与他人合作,来创造出能吸引受众注意力的内容。 所有这些规划、研究和创意都需要一个地方汇总聚合,这就是内容日历软件的用武之地。 有了合…

C++ 多线程:实现一个功能完整的线程池

C 多线程(四):实现一个功能完整的线程池 今天我们来聊一聊异步编程的知识。在分布式系统中,一个功能完整的线程池类是一切代码的前提。 一个『合格』的线程池该具备哪些功能? 首先,很自然地想到『线程池类…