当前位置: 首页 > news >正文

MySQL 数据库安全性练习题

数据库安全性

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.lryc.cn/news/220498.html

相关文章:

  • 如何使用Node.js快速创建HTTP服务器并实现公网访问本地Server
  • zigbee路灯无线通讯机制
  • asp.net docker-compose添加kafka和redis和zookeeper
  • 2024上海国际人工智能展(CSITF)“创新驱动发展·科技引领未来”
  • 汽车标定技术(三)--XCP协议如何支持测量功能
  • [c++]你最喜爱的stringstream和snprintf性能深入剖析
  • windows 用vs创建cmake工程并编译opencv应用项目生成exe流程简述
  • QML 仪表盘小示例
  • 力扣206. 反转链表
  • 深度学习之基于Tensorflow卷积神经网络花卉识别系统
  • leetcode链表
  • Kali Linux渗透测试的艺术
  • 2023年最新版潮乎盲盒源码含搭建教程
  • [GitLab] 安装Git 指定版本
  • vue中ref和$refs
  • CRM怎样帮助您的企业进行营销管理?
  • Gerrrit 管理员常用命令
  • 深入理解强化学习——多臂赌博机:增量式实现
  • 视频批量混剪剪辑软件类似剪映设计一个模板后, 视频,图片,文字,转场,音频,特效都可以系统随机
  • 优维低代码实践:打包发布
  • js深度学习(三)
  • JVM类的声明周期
  • html将复选框变为圆形样例
  • 笔记软件 Keep It mac v2.3.3中文版新增功能
  • uni-app 开发的H5 定位功能部署注意事项
  • CY5-COOH脂溶性羧基荧光染料1032678-07-1
  • 【CSS】div 盒子居中的常用方法
  • Pytorch网络模型训练
  • webgoat-Path traversal
  • P8976 「DTOI-4」排列,贪心