MySQL 数据库安全性练习题

news2024/12/23 18:38:09

数据库安全性

d50183d4e3464273b7339cb64c03daed.jpg

一、实验目的

(1)熟悉通过MySQL对数据进行安全性控制

 

二、实验环境

Windows 11

MySQL  Navicat

 

三、实验内容

今有以下两个关系模式:

        职工(职工号,姓名,年龄,职务,工资,部门号)

        部门(部门号,名称,经理名,地址,电话号)

请用SQL的GRANT语句 和REVOKE语句(加上视图机制)实现以下授权定义或存取控制功能:

( 1 )用户王明对两个表有SELECT 权限。

( 2 )用户李勇对两个表有INSERT 和DELETE 权限。

( 3 )  每个职工只对自己的记录有SELECT 权限。

( 4 )用户刘星对职工表有SELECT 权限,对“工资”字段具有更新权限。

( 5 )用户张新具有修改这两个表的结构的权限。

( 6 )用户周平具有对两个表所有权限(读,插,改,删数据),并具有给其他用户授权的权限。

( 7 )用户杨兰具有从每个部门职工中SELECT 最高工资、最低工资、平均工资的权限,他不能查看每个人的工资。

 

四、实验步骤

(1)创建两张表

CREATE TABLE 部门 (
    部门号 CHAR(10) PRIMARY KEY,
    名称 CHAR(16),
    经理名 CHAR(10),
    地址 CHAR(50),
    电话号 CHAR(11)
);

CREATE TABLE 职工 (
    职工号 CHAR(10) PRIMARY KEY,
    姓名 CHAR(10),
    年龄 SMALLINT,
    职务 CHAR(12),
    工资 NUMERIC(8,2),
    部门号 CHAR(10),
    FOREIGN KEY ( 部门号 ) REFERENCES 部门(部门号)
);

(2)增添数据

INSERT INTO 部门 VALUES('BM001','部门一','经理一','地址一','12345678901');
INSERT INTO 部门 VALUES('BM002','部门二','经理二','地址二','12345678902');
INSERT INTO 部门 VALUES('BM003','部门三','经理三','地址三','12345678903');

INSERT INTO 职工 VALUES('ZG001','王明',31,'职位一',11000,'BM001');
INSERT INTO 职工 VALUES('ZG002','李勇',32,'职位二',12000,'BM002');
INSERT INTO 职工 VALUES('ZG003','刘星',33,'职位三',13000,'BM003');
INSERT INTO 职工 VALUES('ZG004','张新',34,'职位四',14000,'BM002');
INSERT INTO 职工 VALUES('ZG005','周平',35,'职位五',15000,'BM003');
INSERT INTO 职工 VALUES('ZG006','杨兰',36,'职位六',16000,'BM001');

(3)创建用户

CREATE USER 王明 IDENTIFIED BY '123456';
CREATE USER 李勇 IDENTIFIED BY '123456';
CREATE USER 刘星 IDENTIFIED BY '123456';
CREATE USER 张新 IDENTIFIED BY '123456';
CREATE USER 周平 IDENTIFIED BY '123456';
CREATE USER 杨兰 IDENTIFIED BY '123456';

(4)进行下列操作:

-- 1. 用户王明对两个表有SELECT权限

GRANT SELECT 
ON TABLE 职工
TO 王明;

GRANT SELECT 
ON TABLE 部门
TO 王明;

-- 2. 用户李勇对两个表有INSERT和DELETE权限

GRANT INSERT, DELETE
ON TABLE 职工
TO 李勇;

GRANT INSERT, DELETE
ON TABLE 部门
TO 李勇;

-- 3. 每个职工只对自己的记录有SELECT权利

CREATE VIEW 职工视图 
AS
SELECT * 
FROM 职工 
WHERE concat(姓名,'@localhost') = USER();

GRANT SELECT 
ON 职工视图
TO 王明,李勇,刘星, 张新,周平,杨兰;

-- 4. 用户刘星对职工表有SELECT权限, 对工资字段有更新权限

GRANT SELECT, UPDATE(工资)
ON TABLE 职工
TO 刘星;

-- 5. 用户张新具有修改两个表结构权限

GRANT ALTER 
ON TABLE 职工
TO 张新;

GRANT ALTER
ON TABLE 部门
TO 张新;

-- 6. 用户周平具有对两个表的所有权限(读、插、改、删数据),并具有给其他用户授权的权限

GRANT ALL PRIVILEGES
ON TABLE 职工
TO 周平
WITH GRANT OPTION;

GRANT ALL PRIVILEGES
ON TABLE 部门
TO 周平
WITH GRANT OPTION;

-- 7. 用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权限但不能查看每个人的工资

CREATE VIEW 部门工资(名称,最高工资,最低工资,平均工资)
AS
SELECT `部门`.`名称`, MAX(`工资`), MIN(`工资`), AVG(`工资`)
FROM `职工`, `部门`
WHERE `职工`.`部门号` = `部门`.`部门号`
GROUP BY `职工`.`部门号`;

GRANT SELECT
ON 部门工资
TO 杨兰;

 

五、效果图

e93ce8df0baf4009953fc2d93baac942.png

da15edc94a3240f8ac352c8aaa7480bd.png

2fab2845f4774781b6590fb422382229.png

50b24aae85034d2191bab4f4a12b217c.png

 

 

 

 

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

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

相关文章

11.3递归建二叉树,二叉树函数规范化输入输出,一些二叉树性质,求叶子结点与树的高度

建树 ,递归建树 输入为 建立树 递归 函数参数表为引用或指针 void Creat(BiTree *T){char ch;scanf("%c",&ch);if(ch#){*TNULL;}else{*T(BiTree)malloc(sizeof(BiTNode));(*T)->datach;Creat(&(*T)->nextleft);Creat(&(*T)->nex…

标签识别中的数据泄露:关键分析

一、介绍 在数据驱动的决策时代,收集、处理和分析数据的过程在从医疗保健到金融,从营销到研究的各个领域都发挥着举足轻重的作用。数据分析的基本步骤之一是正确识别数据集中的标签或类别。然而,这项看似简单的任务可能充满挑战,尤…

springboot苍穹外卖实战:八、开发小程序准备工作+入门案例+小程序微信用户登录流程+商品浏览

开发小程序准备工作 官方网址:https://mp.weixin.qq.com/cgi-bin/wx?token&langzh_CN 1、微信小程序注册 注册地址:https://mp.weixin.qq.com/wxopen/waregister?actionstep1 2、 完善小程序信息 登录小程序后台:https://mp.weixin.…

前端框架Vue学习 ——(三)Vue生命周期

生命周期:指一个对象从创建到销毁的整个过程。 生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法(钩子) mounted:挂载完成,Vue 初始化成功,HTML 页面渲染成功…

Linux学习第33天:Linux INPUT 子系统实验(二):Linux 自带按键驱动程序的使用

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本节笔记主要内容是学会如何使用Linux自带的按键驱动程序。 一、自带按键驱动程序源码简析 配置选项路径如下: -> Device Drivers ->…

内存学习(3):DRAM的基础存储结构(存储层级、读写过程,刷新与暂存)

1 DRAM背景简介 DRAM,全称为 Dynamic Random Access Memory ,中文名是“动态随机存取存储器”。所谓“动态”是和“静态”相对应的,芯片世界里还有一种 SRAM 静态随机存取存储器的存在。 笼统地说,DRAM 的结构比 SRAM 更简单&am…

UE5——源码阅读——2

这个是非常大的作用域,当程序离开这个东西,就会把它释放掉,设置了一个作用域把当前线程标记为主线程 插入了一个默认的Main,这个东西其实是标记点,这个标记是在UE内部有个性能分析工具可以看到这个标记点,主要是确定位…

【java学习—十三】处理流之三:标准输入输出流(3)

文章目录 1. 相关概念2. 举例与练习2.1. 举例2.2. 练习 1. 相关概念 System.in 和 System.out 分别代表了系统标准的输入和输出设备,默认输入设备是键盘,输出设备是显示器。     System.in 的类型是 InputStream     System.out 的类型是 PrintS…

SpringMvc从菜鸟到大拿完成蜕变

SpringMvc从菜鸟到大拿完成蜕 介绍 Why springmvc Servlet缺点: servlet中的service:方法一次只能处理一类请求;单拿用户表来说,得需要创建五个Servlet;在url中输入的是urlpattern;默认只访问service方法;如何减少Servlet的个数呢? 增加了一个method参数;其他人有可能会喜欢…

腾讯云CVM S5服务器优惠价格表,买一年送3个月

腾讯云服务器CVM标准型S5有活动,CVM 2核2G S5优惠价280.8元一年自带1M带宽,15个月313.2元、2核4G配置748.2元15个月、4核8G配置1437.24元15个月、8核16G优惠价3048.48元15个月,公网带宽可选1M、3M、5M或10M,腾讯云服务器网txyfwq.…

【算法练习Day39】单词拆分多重背包的介绍

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 单词拆分多重背包总结&…

[BUUCTF NewStar 2023] week5 Crypto/pwn

最后一周几个有难度的题 Crypto last_signin 也是个板子题,不过有些人存的板子没到,所以感觉有难度,毕竟这板子也不是咱自己能写出来的。 给了部分p, p是1024位给了922-101位差两头。 from Crypto.Util.number import * flag b?e 655…

Winform 实现俄罗斯方块游戏(一)

第一步,先用GDI绘制小正方形方块,其它形状的用这个方块合成 如何绘制一个方块?先绘制两个正方形,如下: 然后四周用梯形填充,内部颜色用渐变,这样更有立体感,下篇介绍如何实现。

D-link未授权访问以及远程代码执行

随便输入一个错误密码,会跳转到页面: /page/login/login.html?errorfail继续访问有效页面漏洞url: /Admin.shtml然后访问管理页面去更改管理密码 直接构造payload访问漏洞url: /cgi-bin/execute_cmd.cgi?cmdid执行命令&#…

2023年11月5日网规考试备忘

早上题目回忆: pki体系 ipsec,交换安全(流量抑制) aohdlc bob metclaf —ethernet pon tcp三次握手 OSPF lsa?交换机组ospf配置问题,ping网关可通,AB不通 raid6 300G*8 网络利用率 停等协议10…

腾讯云CVM S5服务器4核8G配置性能测评和优惠价格表

腾讯云4核8G服务器CVM标准型S5实例性能测评,包括CPU型号、内存、系统盘、CVM实例规格性能测评,腾讯云4核8G租用优惠价格表,腾讯云服务器网txyfwq.com分享腾讯云4核8G服务器CVM S5性能测评和优惠价格表: 腾讯云4核8G服务器CVM S5性…

dupeGuru 清理微信重复文件

本文摘录于:https://www.bilibili.com/video/BV13p4y1G75Y/?spm_id_from333.337.search-card.all.click&vd_source483e5c52353ea59d1a5eadac7737591a只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 微信用了七八年,文件…

Java异常你还没有了解吗?

🤷‍♀️🤷‍♀️🤷‍♀️ 今天和大家一起学习一下Java中的异常! 清风的CSDN博客个人主页 🌂c/java领域新星创作者 🎉欢迎👍点赞✍评论❤️收藏 😛😛😛希望我…

【JavaScript】window 对象、location 对象、navigator 对象和 history 对象

1. window 对象 BOM (Browser Object Model ) 是浏览器对象模型: window对象是一个全局对象,也可以说是JavaScript中的顶级对象像document、alert()、console.log()这些都是window的属性,基本BOM的属性和方法都是window的所有通过var定义在全…

【Java 进阶篇】JSP 简单入门

在现代Web开发中,JavaServer Pages(JSP)是一项非常重要的技术。JSP允许开发者将Java代码嵌入HTML页面,以实现动态内容的生成和呈现。本文将详细介绍JSP的概念、原理以及如何使用JSP来构建Web应用程序。 第一部分:JSP …