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

【实训01】基于视图的访问控制 【实训02】基于角色的访问控制

ps:过程可以跟着题目一步步做,以下是答案,没有过程。

【实训01】基于视图的访问控制 

第1关:基于视图的简单查询

任务描述
掌握视图的定义与使用方法;

相关知识
为了完成本关任务,你需要掌握:1.如何在sqlserver中创建视图,2.如何使用视图查询。

1.连接数据库和初始化数据库
切换目录至/data/workspace/myshixun

cd /data/workspace/myshixun

给init.sh添加运行权限,并运行初始化数据库。脚本将会创建company数据库,并依次创建员工表,客户表,销售主表,销售明细表,产品名称表。

chmod +755 init.sh
./init.sh

2.连接数据库
使用sqlcmd连接 SQLServer :

sqlcmd -S localhost -U sa -P '<123123Aa!@>' 

sqlcmd 是连接数据库必要的语句, localhost 代表从本地连接,sa 是用户名, '<123123Aa!@>'  是密码。

3.创建销售订单相关视图
为了创建销售订单相关视图,需要了解销售明细表结构,如下

create table 销售明细表(
    订单编号 int NOT NULL,
    产品编号 char(5) NOT NULL,
    销售数量 int NOT NULL,
    单价 numeric(7,2) NOT NULL,
    订单日期 datetime NULL
)


创建一个视图V_ItemCount,方便查询销售订单相关

$ sqlcmd -S localhost -U sa -P '<123123Aa!@>' #连接sqlserver
>USE company
>GO
>CREATE VIEW V_ItemCount
>AS
>SELECT 订单编号, 产品编号, 销售数量 as 订货数量 FROM 销售明细表;
>GO


编程要求
使用上面创建的视图V_ItemCount查询销售订单中产品编号为P0001的订货数量,
将总的订单数量写入/data/workspace/myshixun/result中
点击评测。


注意:例如存在5个订单,数量分别为1,2,3,4,5。需要向/data/workspace/myshixun/result中写入15

测试说明
平台会对结果进行测试:
如果正确会输出correct

开始你的任务吧,祝你成功!

(粘贴用鼠标右键)依次输入以下

cd /data/workspace/myshixun
vi /data/workspace/myshixun/result

进入界面之后按 i,进入insert模式

第一行输入 12

按esc键退出,输入 :wq

第2关:可见列控制

任务描述
创建新用户并赋予新用户User1查询产品名称表权限。
创建视图V_Item查询产品名称表,并将视图权限赋予User1
创建成本小于1000的产品视图VIEW_CP_PRICE1000,并将视图权限赋予User1
使用User1用户登录,并使用视图VIEW_CP_PRICE1000查询价格在1000以下产品的产品编号、名称和成本
相关知识
为了完成本关任务,你需要掌握:1.如何在sqlserver中创建视图,2.如何使用视图查询,3.创建新数据库用户,4.为数据库用户赋予表、视图等权限。

1.连接数据库和初始化数据库
切换目录至/data/workspace/myshixun

cd /data/workspace/myshixun

给init.sh添加运行权限,并运行初始化数据库。脚本将会创建company数据库,并依次创建员工表,客户表,销售主表,销售明细表,产品名称表。

chmod +755 init.sh
./init.sh

2.连接数据库
使用sqlcmd连接 SQLServer :

sqlcmd -S localhost -U sa -P '<123123Aa!@>' 

sqlcmd 是连接数据库必要的语句, localhost 代表从本地连接,sa 是用户名, '<123123Aa!@>'  是密码。


3.创建销售订单相关视图
为了创建产品名称相关视图,需要了解产品名称表结构,如下

create table 产品名称表(
    产品编号 char(5) NOT NULL primary key,
    产品名称 varchar(20) NOT NULL,
    成本 int NOT NULL
)


创建一个视图V_Item,查询所有产品的信息(显示列:产品编号、产品名称、成本)

$ sqlcmd -S localhost -U sa -P '<123123Aa!@>' #连接sqlserver
>USE company
>GO
>CREATE VIEW V_Item
>AS
>SELECT * FROM 产品名称表;
>GO


4.新用户User1并授予产品名称表权限
创建新用户User1,密码为User1_pass,并赋予产品名称表权限

$ sqlcmd -S localhost -U sa -P '<123123Aa!@>' #连接sqlserver
> use company
> go
> create login User1 with password = 'User1_pass';
> go
> create user User1 for login User1 with default_schema=dbo;
> go
> GRANT SELECT ON 产品名称表 TO User1
> go


将视图V_Item的产品编号, 产品名称权限赋予User1

$ sqlcmd -S localhost -U sa -P '<123123Aa!@>' #连接sqlserver
> use company
> go
> GRANT SELECT ON V_Item(产品编号, 产品名称) TO User1;
> go


使用sa权限登录数据库,查看company数据库中的表如下

使用User1权限登录数据库,查看company数据库中的表如下

对比发现,User1只能查看被授权的产品名称表。
使用sa权限登录数据库,使用视图V_Item查看所有数据如下

使用User1权限登录数据库,使用视图V_Item查看所有数据如下,因为视图未授予成本列查看权限,所以查看失败


编程要求
1.创建成本小于1000的产品视图VIEW_CP_PRICE1000,授予用户User1查看产品视图VIEW_CP_PRICE1000的权限
2.使用User1登录并基于VIEW_CP_PRICE1000视图,查询价格在1000以下产品的产品编号、名称和成本
将查询到的产品编号写入/data/workspace/myshixun/result2
点击评测。
注意:例如存在3个产品编号,分别为P0001,P0001,P0002。需要向/data/workspace/myshixun/result2中写入P0001,P0001,P0002

测试说明
平台会对结果进行测试:
如果正确会输出correct

开始你的任务吧,祝你成功!

cd /data/workspace/myshixun
vi /data/workspace/myshixun/result2

步骤和第一题类似,进入insert界面之后,输入

P0005,P0007,P0011,P0012

按esc键退出,输入 :wq

第3关:加密视图与更新视图

任务描述
利用T-SQL语句,要求加密并保证对该视图的更新都要符合成本小于1000这个条件。对于视图VIEW_CP_PRICE2000进行以下数据更新
插入一条产品记录('100082','数码相机',500)。
将产品编号为’100082’的成本改为1500。
删除产品编号为’100082’的产品。
相关知识
为了完成本关任务,你需要掌握:1.如何在sqlserver中创建视图,2.如何使用视图查询,3.T-SQL语句查询。

1.连接数据库和初始化数据库
切换目录至/data/workspace/myshixun

cd /data/workspace/myshixun

给init.sh添加运行权限,并运行初始化数据库。脚本将会创建company数据库,并依次创建员工表,客户表,销售主表,销售明细表,产品名称表。

chmod +755 init.sh
./init.sh

2.连接数据库
使用sqlcmd连接 SQLServer :

sqlcmd -S localhost -U sa -P '<123123Aa!@>' 

sqlcmd 是连接数据库必要的语句, localhost 代表从本地连接,sa 是用户名, '<123123Aa!@>'  是密码。


3.创建视图VIEW_CP_PRICE1000
为了创建产品名称相关视图,需要了解产品名称表结构,如下

create table 产品名称表(
    产品编号 char(5) NOT NULL primary key,
    产品名称 varchar(20) NOT NULL,
    成本 int NOT NULL
)


利用T-SQL语句创建VIEW_CP_PRICE1000,加密并保证对该视图的更新都要符合成本小于1000这个条件。

$ sqlcmd -S localhost -U sa -P '<123123Aa!@>' #连接sqlserver
>USE company
>GO
>CREATE VIEW VIEW_CP_PRICE1000 
>WITH ENCRYPTION AS 
>SELECT * FROM 产品名称表 WHERE 成本 < 1000
>GO


编程要求
利用视图VIEW_CP_PRICE1000完成如下操作

1.插入一条产品记录('100082','数码相机',500)。
2.将产品编号为’100082’的成本改为1500。
3.删除产品编号为’100082’的产品。
完成上述操作后,数据库中数码相机的价格为多少?将价格(如果商品被删除无法查询则填入0)写入/data/workspace/myshixun/result3中
点击评测。
注意:例如数码相机价格为1500。需要向/data/workspace/myshixun/result3中写入1500

测试说明
平台会对结果进行测试:
如果正确会输出correct

开始你的任务吧,祝你成功!

cd /data/workspace/myshixun
vi /data/workspace/myshixun/result3

步骤和第一题类似,进入insert界面之后,输入

1500

按esc键退出,输入 :wq

【实训02】基于角色的访问控制

第1关:基于角色的访问控制

任务描述

  • 了解基于角色的访问控制
  • 创建多个角色赋予不同的权限
  • 测试不同权限间的区别

相关知识
为了完成本关任务,你需要掌握:1.如何在sqlserver中创建用户,2.如何给不同用户赋予不同权限。

1.连接数据库和初始化数据库
切换目录至/data/workspace/myshixun

cd /data/workspace/myshixun

给init.sh添加运行权限,并运行初始化实验需要的数据库。

chmod +755 init.sh
./init.sh

2.权限管理

以sa登录,创建一个数据库,数据库名为DB1,在该数据库中创建一个学生表(学号,姓名,性别,年龄,所在系)。

$ sqlcmd -S localhost -U sa -P '<123123Aa!@>'

#创建DB1数据库

> create database DB1

> go

> use DB1

> go

#创建students表

> create table students (

>    sid int primary key not null,

>    sname varchar(16),

>    ssex varchar(8),

>    sage int,

>    smajor varchar(16)

>)

>go

#插入一条数据

>insert students(sid, sname, ssex, sage, smajor) values (1, 'student1', 'girl', 18,'computer')

> go

以sa登录,创建一个登录(Login),登录名为Login1,密码为login_pass1。以Login1登录,观察可访问的数据库情况。

$ sqlcmd -S localhost -U sa -P '<123123Aa!@>'
> create login Login1 with password = 'login_pass1'
> go
$ sqlcmd -S localhost -U Login1 -P 'login_pass1'
退出 SA 并以 Login1 登录
> use DB1
> go


当使用Login1登录时无法查看DB1数据库

3. 以sa登录,在DB1数据库中创建数据库用户weng,使用户weng能用登录名Login1登录,并成为DB1的数据库用户,再次以Login1登录,观察可访问的数据库情况

$ sqlcmd -S localhost -U sa -P '<123123Aa!@>'
> use DB1
> go
> create user weng for login Login1
> go
#赋予权限
> grant select, insert, update on students to weng
> grant alter on schema::dbo to weng
> grant create table to weng
> go


当使用Login1登录时可以查看DB1数据库


以sa登录,用收权语句收回weng用户创建表的权力,查询学生表的权力,向学生表中添加、修改、删除记录的权力


$ sqlcmd -S localhost -U sa -P '<123123Aa!@>'
> use DB1
> go
> revoke select, insert, update on students to weng
> revoke create table to weng
> go


编程要求
创建一个登录,登录名user2,密码user_pass2,并赋予user2访问DB2数据库权限
获取DB2数据库中students表的所有内容
完成上述操作后,将得到的所有数据年龄相加写入/data/workspace/myshixun/result中
点击评测。
注意:例如得到两条数据年龄分别为24,25。则需要向/data/workspace/myshixun/result中写入49

测试说明
平台会对结果进行测试:
如果正确会输出correct

开始你的任务吧,祝你成功!

cd /data/workspace/myshixun
vi /data/workspace/myshixun/result

步骤和第一题类似,进入insert界面之后,输入

62

按esc键退出,输入 :wq


http://www.kler.cn/news/354309.html

相关文章:

  • Flythings学习(三)界面交互
  • 【工具变量】上市公司企业广告支出数据(2007-2023年)
  • centors7安装docker启动ubuntu
  • ubuntu 20.04 安装ros1
  • Axure重要元件三——中继器
  • Springboot使用腾讯云短信SDK发送短信
  • JVM 实战篇(一万字)
  • QT--组合框 QComboBox ,微调框 QSpinBox,滑动条 QSlider, 进度条 QProgressBar
  • 结构体通讲——数据结构解惑
  • 在线考试系统的现代化解决方案:Spring Boot与JavaWeb
  • 【系统集成中级】OSI 七层模型
  • web前端面试中拍摄的真实vue面试题
  • 考研论坛设计小程序ssm+论文源码调试讲解
  • 设计一个支持自动化测试执行的测试框架
  • 盘古信息:智能仓储管理赋能企业降本增效
  • 【前端】Matter:交互与碰撞
  • 关于武汉芯景科技有限公司的限流开关芯片XJ6288开发指南(兼容SY6288)
  • C++ 函数的参数传递
  • MAC 电脑Office power point编辑的时候,显示“某些字体无法随演示文稿一起保存,仍然要保存演示文稿吗?”
  • 深入探讨B+树索引的基本概念、工作原理以及在MySQL中的应用