实验四 数据库安全性和完整性

这篇具有很好参考价值的文章主要介绍了实验四 数据库安全性和完整性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验四 数据库安全性和完整性

一.实验目的
1.加深对数据库安全性和完整性理解;
2.学会授权与回收;
4.理解并体会数据库实体完整性、参照完整性、用户定义的完整性约束条件的作用。
二. 实验内容

对已建好的各表和用户进行权限的授权和回收操作,进行完操作之后检查授权过的用户是否真正具有授予的数据操作的权力了,进行完权力收回操作之后的用户是否确实丧失了收回的数据操作的权力。
定义各种完整性约束条件,之后输入各种数据以验证约束条件的作用

  1. 设置用户aSPJ表的查询权限。以a登录,验证a的权限。

实验过程:

(1)先创建a用户,密码为“password”:

CREATE USER 'a' IDENTIFIED WITH mysql_native_password BY'password';

      (2)没授权之前验证a的权限:

             登录:

实验四 数据库安全性和完整性

运行查询语句:

SELECT sno

from spj

发现是没有对数据库的访问权限的:

实验四 数据库安全性和完整性

(3)再进行授权:

GRANT SELECT

ON spj

TO a;

      (4)登录验证a的权限:

SELECT sno

from spj

             实验四 数据库安全性和完整性

实验结果:

创建:

实验四 数据库安全性和完整性

授权:

实验四 数据库安全性和完整性

结果分析:

创建用户时,创建’a’@%,不要创建a@host,否则不能授权。

  1. 设置用户bS表、P表具有修改的权限,并要求b能够将该权限授予其它用户c。分别以bc登录,验证bc的权限。

实验过程:

(1)创建b用户,密码为“bpassword”:

CREATE USER 'b' IDENTIFIED WITH mysql_native_password BY'bpassword';

(2)创建c用户,密码为“cpassword”:

CREATE USER 'c' IDENTIFIED WITH mysql_native_password BY'cpassword';

      (3)进行授权(授予查询和修改权限,只授予修改权限不可以):

GRANT SELECT

ON s

TO b;

实验四 数据库安全性和完整性

GRANT UPDATE

ON s

TO b

WITH GRANT OPTION;

实验四 数据库安全性和完整性

GRANT SELECT

ON p

TO b;

实验四 数据库安全性和完整性

GRANT UPDATE

ON p

TO b

WITH GRANT OPTION;

实验四 数据库安全性和完整性

      (4)登录b用户,验证权限:

             实验四 数据库安全性和完整性

(5)登录b将s表s5中SNAME改为“为人民”,城市改为“北京”

UPDATE s

SET SNAME='为人民',CITY='北京'

WHERE sno='S1';

实验四 数据库安全性和完整性

(6)将p表中p1改为螺丝,颜色改为红

UPDATE p

SET PNAME='螺丝',COLOR='红'

WHERE pno='p1';

      实验四 数据库安全性和完整性

(7)登录b,执行授权权限,授予c对s、p表的查询和修改权限

GRANT SELECT

ON s

TO c;

实验四 数据库安全性和完整性

GRANT UPDATE

ON s

TO c

实验四 数据库安全性和完整性

GRANT SELECT

ON p

TO c;

实验四 数据库安全性和完整性

GRANT UPDATE

ON p

TO c

实验四 数据库安全性和完整性

(8)登录c,将s表s5中SNAME改为“为民”,城市改为“上海”

实验四 数据库安全性和完整性

UPDATE s

SET SNAME='为民',CITY='上海'

WHERE sno='S1';

实验四 数据库安全性和完整性

(9)将p表中p1改为螺母,颜色改为蓝

UPDATE p

SET PNAME='螺母',COLOR='蓝'

WHERE pno='p1';

实验四 数据库安全性和完整性

实验结果:

(1)创建b用户,密码为“bpassword”:

实验四 数据库安全性和完整性

(2)创建c用户,密码为“cpassword”:

实验四 数据库安全性和完整性

      (3)进行授权(授予查询和修改权限,只授予修改权限不可以):

实验四 数据库安全性和完整性

实验四 数据库安全性和完整性

实验四 数据库安全性和完整性

实验四 数据库安全性和完整性

      (4)登录b用户,验证权限:

             实验四 数据库安全性和完整性

(5)登录b将s表s5中SNAME改为“为人民”,城市改为“北京”

实验四 数据库安全性和完整性

(6)将p表中p1改为螺丝,颜色改为红

             实验四 数据库安全性和完整性

(7)登录b,执行授权权限,授予c对s、p表的查询和修改权限

实验四 数据库安全性和完整性

实验四 数据库安全性和完整性

实验四 数据库安全性和完整性

实验四 数据库安全性和完整性

(8)登录c,将s表s5中SNAME改为“为民”,城市改为“上海”

实验四 数据库安全性和完整性

实验四 数据库安全性和完整性

       (9)将p表中p1改为螺母,颜色改为蓝

实验四 数据库安全性和完整性

结果分析:

        授予某用户修改权限的时候记得同时授予查询权限,没有select就不能update

  1. 收回用户ab的权限,并验证用户c权限的情况。

实验过程:

      (1)收回a对spj表的查询权限:

REVOKE SELECT

on spj

FROM a;

      (2)收回b对s、p表的更改权限:

REVOKE UPDATE

on s

FROM b;

REVOKE UPDATE

on p

FROM b;

(3)验证用户c是否还有对s、p表的更改权限:

登录c:

实验四 数据库安全性和完整性

将s表s5中SNAME改为“为国”,城市改为“广州”

UPDATE s

SET SNAME='为国',CITY='广州'

WHERE sno='S1';

将p表中p1改为螺丝,颜色改为绿

UPDATE p

SET PNAME='螺丝',COLOR='绿'

WHERE pno='p1';

实验结果:

      (1)收回a对spj表的查询权限:

实验四 数据库安全性和完整性

      (2)收回b对s、p表的更改权限:

实验四 数据库安全性和完整性实验四 数据库安全性和完整性

      (3)验证用户c是否还有对s、p表的更改权限:

        实验四 数据库安全性和完整性实验四 数据库安全性和完整性

结果分析:

       只收回了b的权限,b授予c的权限并没有收回,说明mysql并没有进行级联回收。

4.对实验1中创建的表,用图形用户界面建立外键联系,并验证外键的作用。

实验过程:

  1. 右键----设计表----外键----创建外键

实验四 数据库安全性和完整性

实验四 数据库安全性和完整性

 

(2)验证外键作用:(在spj表中插入一条违背外键约束的数据)
往spj表插入('S8','P1','J9',200):
INSERT INTO spj VALUES('S8','P1','J9',300);
实验结果:
实验四 数据库安全性和完整性

 结果分析:
    S表最大到S6,p表最大到P6,j表最大到J7,插入的数据是违背外键约束的,所以会报错。

实验四 数据库安全性和完整性实验四 数据库安全性和完整性实验四 数据库安全性和完整性

 5.    对实验1中创建的表,设置零件的颜色必须在红、橙、黄、绿、青、蓝、紫 七种颜色范围内,零件重量不能超过50的约束条件,并给这两种约束条件命名,名字为自己姓名的全拼。

实验过程:

(1)添加约束:

ALTER TABLE p

ADD CONSTRAINT pengzhen CHECK(COLOR in ('红','橙','黄','绿','青','蓝','紫')and WEIGHT<=50);

(2)验证约束有没有用,把p表里P1的“绿“改为“赤”

UPDATE p

SET color='赤'

WHERE pno='P1';

实验结果:

(1)添加约束:

实验四 数据库安全性和完整性

(2)验证约束有没有用,把p表里P1的“绿“改为“赤”

实验四 数据库安全性和完整性

结果分析:

        验证约束有没有用,把p表里P1的“绿“改为“赤”,运行会报错,pengzhen约束已存在。数据自然改不了了。

实验四 数据库安全性和完整性

6.    设置SPJ表中供应零件的数量都不能超过1000

实验过程:

      (1)添加约束:

ALTER TABLE spj

add CHECK(QTY<=1000);

  1. 在spj表里将第一条数据的QTY修改为1200

UPDATE spj

SET QTY=1200

WHERE sno='S1' AND pno='P1' AND jno='J4';

实验结果:

  1. 添加约束:

实验四 数据库安全性和完整性

(2)在spj表里将第一条数据的QTY修改为1200

实验四 数据库安全性和完整性

结果分析:

由于约束的存在,不能将数据修改为大于1000的数。

实验四 数据库安全性和完整性

7.    设置S表中的供应商号以字母‘S’开头
实验过程:
ALTER TABLE s
add CHECK(sno like 's%');
实验结果:
 
结果分析:
        创建约束,CHECK(sno like 's%')
 

8.    验证各个表的实体完整性。
实验过程:
-- 验证s表的实体完整性
-- (1)往s表插入一条正常的数据
INSERT INTO s VALUES('S7','红旗',10,'济南');
-- (2)往s表插入一条重复的数据
INSERT INTO s VALUES('S7','群众',10,'青岛');
-- (3)往s表插入一条空的数据
INSERT INTO s VALUES('','创新',10,'广州');

-- 验证p表的实体完整性
-- (1)往p表插入一条正常的数据
INSERT INTO p VALUES('P7','轮胎',null,20);
-- (2)往p表插入一条重复的数据
INSERT INTO p VALUES('P7','轮胎',null,20);
-- (3)往p表插入一条空的数据
INSERT INTO p VALUES(NULL,'钉子',null,5);

-- 验证j表的实体完整性
-- (1)往j表插入一条正常的数据
INSERT INTO j VALUES('J8','造车厂','上海');
-- (2)往j表插入一条重复的数据
INSERT INTO j VALUES('J8','造车厂','上海');
-- (3)往j表插入一条空的数据
INSERT INTO j VALUES(NULL,'轮胎厂','南京');

-- 验证spj表的实体完整性
-- (1)往spj表插入一条正常的数据
INSERT INTO spj VALUES('S7','P6','J7',300);
-- (2)往spj表插入一条重复的数据
INSERT INTO spj VALUES('S7','P6','J7',300);
-- (3)往spj表插入一条空的数据
INSERT INTO spj VALUES('S7',NULL,'J7',300);
实验结果:
-- 验证s表的实体完整性
-- (1)往s表插入一条正常的数据('S7','红旗',10,'济南')
 

实验四 数据库安全性和完整性

-- (2)往s表插入一条重复的数据('S7','群众',10,'青岛')

实验四 数据库安全性和完整性

-- (3)往s表插入一条空的数据('','创新',10,'广州')

实验四 数据库安全性和完整性

-- 验证p表的实体完整性

-- (1)往p表插入一条正常的数据('P7','轮胎',null,20)

实验四 数据库安全性和完整性

-- (2)往p表插入一条重复的数据('P7','轮胎',null,20)

实验四 数据库安全性和完整性

-- (3)往p表插入一条空的数据(NULL,'钉子',null,5)

实验四 数据库安全性和完整性

-- 验证j表的实体完整性

-- (1)往j表插入一条正常的数据('J8','造车厂','上海')

实验四 数据库安全性和完整性

-- (2)往j表插入一条重复的数据('J8','造车厂','上海')

实验四 数据库安全性和完整性

-- (3)往j表插入一条空的数据(NULL,'轮胎厂','南京')

实验四 数据库安全性和完整性

-- 验证spj表的实体完整性

-- (1)往spj表插入一条正常的数据('S7','P6','J7',300)

实验四 数据库安全性和完整性

-- (2)往spj表插入一条重复的数据('S7','P6','J7',300)

实验四 数据库安全性和完整性

-- (3)往spj表插入一条空的数据('S7',NULL,'J7',300)

实验四 数据库安全性和完整性

结果分析:

        由于s、p、j表创建表时定义的完整性约束,所以不可以插入重复数据,不可以插入主码为null的数据,上述语句即验证了完整性约束。

实验四 数据库安全性和完整性实验四 数据库安全性和完整性文章来源地址https://www.toymoban.com/news/detail-478740.html

到了这里,关于实验四 数据库安全性和完整性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据库原理】(24)数据库安全性策略

    数据库安全性是数据库管理系统(DBMS)中一个至关重要的方面。它指的是保护数据库免受非授权访问和恶意操作,包括数据泄露、修改、破坏等。 在典型的计算机系统安全模型中,安全措施被设置在不同层级: 应用程序层 :如数据库管理系统,实施特定的安全策略。 数据

    2024年01月16日
    浏览(20)
  • 基于物理安全的数据库访问控制:确保数据安全性

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着大数据时代的到来,各类组织机构和企业纷纷开始关注数据安全和隐私保护。在数据处理和存储过程中,确保数据的物理安全和逻辑安全至关重要。数据库访问控制作为保障数据安全的一项基础工作,也应受到足够的重

    2024年02月12日
    浏览(23)
  • 第四章——数据库的安全性

    问题的提出:数据库安全性产生的原因 数据库的一大特点是共享性 数据共享必然带来数据库安全性问题 数据库系统中的数据共享不能是无条件的共享 数据库的安全性是指保护数据库以防止不合法的使用所造成的的数据泄露、更改或破坏 系统安全保护措施是否有效是数据库

    2023年04月08日
    浏览(16)
  • 五、C#与数据库交互( SQL注入与安全性)

    在C#与数据库交互时,安全性是非常重要的一部分,特别是要防止SQL注入攻击。SQL注入是一种常见的网络攻击手段,攻击者通过在输入字段中注入恶意SQL代码来操纵数据库查询。以下是一些关于如何防止SQL注入的建议: 使用参数化查询 : 这是防止SQL注入的最有效方法。参数化

    2024年02月02日
    浏览(22)
  • 实验8 数据库完整性、安全设计

    第1关 执行 CREATE USER 创建以2022100904为用户名的用户,同时设置其密码为root1234 任务描述 执行 CREATE USER 创建以 2022100904 为用户名的用户,同时设置其密码为 root1234 相关知识 创建用户的语法为如下: 第2关 给予创建的用户2022100904在mydata数据库中授予\\\"J\\\" 表 SELECT 权限 任务描述

    2024年02月09日
    浏览(25)
  • 数据库系统头歌实验八 数据库完整性、安全设计

    第1关:执行 CREATE USER 创建以2022100904为用户名的用户,同时设置其密码为root1234 第2关:给予创建的用户2022100904在mydata数据库中授予\\\"J\\\" 表 SELECT 权限(注意创建权限时的用户名为\\\'用户名\\\'@\\\'localhost\\\'),不允许转授此权限给其它用户。 第3关:给予创建的用户2022100904、2022100908在

    2024年02月05日
    浏览(54)
  • 【SQL】实验十 数据库完整性实验

    一、实验目的 1、 熟悉通过SQL对数据进行完整性控制。熟练掌握数据库 三类完整性约束 (实体完整性、用户自定义完整性、参照完整性) 2、了解SQL SERVER 的违反完整性处理措施。 3、了解主键(PRIMARY KEY)约束 、 外键(FOREIGN KEY)约束 、 唯一性(UNIQUE)约束 、 检查(CHE

    2024年02月01日
    浏览(49)
  • 数据库系统概论—安全、完整性

    数据库的安全性指保护数据库以防 不合法 使用所造成的数据泄露、更改或破坏 2.1用户身份鉴别 静态口令鉴别 动态口令鉴别 生物鉴别特征 智能卡鉴别 2.2存取控制 自主存取控制:给用户限权(DAC,C1级) 强制存取控制:给数据库对象一定的密级(MAC,B1级) 2.3自主存取控制方法(授

    2024年02月03日
    浏览(19)
  • 技术应用:Docker安全性的最佳实验|聊聊工程化Docker

    🔥 技术相关:《技术应用》 ⛺️ I Love you, like a fire! 不可否认,能生存在互联网上的软件都是相互关联的,当我们开发一款应用程序时,它必须与其他的服务进行通信,无论是在你的基础设施,还是云服务,亦或是第三方应用程序上。当然,你不希望你不认识的人伪装成你

    2024年02月13日
    浏览(16)
  • 加密数据安全性的两大安全护盾-前向安全性与后向安全性详解

    在数字安全的世界里,加密技术是用来保护数据不被未经授权访问的重要机制。然而,即使使用了最强的加密算法,也不能保证永远是安全的。攻击者可能会在未来某个时间点获得了解密密钥,从而能够解密拦截的密文。为了解决这个问题,密码学引入了前向安全性(Forwar

    2024年02月04日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包