数据库——安全性

智能2112杨阳

一、目的与要求:

1、设计用户子模式

2、根据实际需要创建用户角色用户,授权

3、针对不同级别的用户定义不同的视图,以保证系统的安全性

二、内容:

  1. 先创建四类用户角色

管理员角色Cusm客户角色Supp、供货商角色Admin、商家销售工作人员角色Salor

源码:

create role 'Cusm';

create role 'Supp';

create role 'Admin';

create role 'Salor';

  1. 创建客户视图、供货商视图

(1)客户视图要求显示所有客户号及对应客户下的所有订单及每个订单的价格

源码:

create view view_Supp as select customers.c_id,orders.o_num,orderitems.item_price from customers,orders,orderitems where customers.c_id=orders.c_id and orderitems.o_num=orders.o_num;

效果:

2供货商视图要求显示所有供货商号及供货商所供水果信息

源码:

create view view_Admin as select suppliers.s_id,fruits.f_id,fruits.f_name,fruits.f_price from suppliers,fruits where fruits.s_id=suppliers.s_id;

效果:

3.为以上四类用户角色授予合适的权限,要求:

(1)管理员拥有所有权限:

源码:

grant all on fruitshop.* to 'Cusm';

 

(2)客户只能查看与之相关的信息(基本信息,购买信息)

源码:

grant select on view_Supp to 'Supp';

(3)供货商只能查看与之相关的信息(可以查看自己供货的水果信息)。

源码:

grant select on view_Admin to 'Admin';

(4)商家销售工作人员可以查看数据库并录入信息,但不能修改、删除

源码:

      grant select,insert on fruitshop.* to 'Salor';

       

     

  1. 为每类用户角色至少创建一个用户(新建用户并分配对应的角色,统一设置初始密码为’123456’)

注意:附上源码,创建用户并授权成功后在交互式运行状态下查看每个用户权限并截图

客户用户:C001,任意主机地址,授权为客户角色的所有权限;

供货商用户:S001,任意主机地址,授权为供货商角色的所有权限;;

商家销售工作人员用户:B001,任意主机地址,授权为销售工作人员角色的所有权限;;

管理员用户:A001,本机,拥有所有权限

源码:

create user 'C001'@'%' identified by '123456';

grant Supp to 'C001';

create user 'S001'@'%' identified by '123456';

grant Admin to 'S001';

create user 'B001'@'%' identified by '123456';

grant Salor to 'B001';

create user 'A001'@'localhost' identified by '123456';

grant all on fruitshop.* to 'A001'@'localhost'

 

5.测试

退出已用root账号登陆的MySQL服务器,用这四类用户帐号分别登陆MySQL服务器并测试其功能(在交互式运行状态下测试,先附上测试源码,关键结果截图)。

测试要求:退出root帐号,重新登陆指定帐号,显示当前数据库中所有表,查看权限内某张表内的所有信息,权限内某张表进行增、删、改、查操作并查看能否正确执行这些操作,如果执行错误请说明导致此错误的原因。

注意:每次登录后先设置当前角色,否则无效果:set role 角色名;

测试客户用户:

mysql -uC001 -p123456;

set role Supp;

use fruitshop;

show tables;

slect* from `view_supp`;

update view_supp set c_address="第五社区",c_city="厦门",c_zip=111000,c_contact="cxr",c_email="123@678" where c_id=10000;

insert into view_supp values(01,"AAA","BBB","CCC",111,"123@321");

delete from view_supp.c_zip;

显示表:

Select操作:

Update操作:

原因:无权限

Insert操作:

原因:无权限

Delete操作:

原因:无权限

测试供货商用户:

mysql -uS001 -p123456

se role Admin;

use fruitshop;

show tables;

select* from `view_Admin`;

update view_Admin set s_city="Beijing",s_zip=111000,s_call=23333 where s_id=100;

insert into view_Admin values(01,"AAA","BBB",111,222);

delete from view_Admin.s_zip;

显示表:

Select操作:

Update操作:

原因:无权限

Insert操作:

原因:无权限

Delete操作:

原因:无权限

测试商家销售工作人员用户:

mysql -uB001 -p123456

set role Salor;

use fruitshop;

show tables;

select* from suppliers;

update suppliers SET s_name="Sariel",s_city="Shanghai",s_zip=520000,s_call=777777 where s_id=107;

insert into suppliers values(108,"Sariel","GQ City",520000,777777);

delete from suppliers.s_name;

显示表:

Select操作:

Update操作:

原因:无权限

Insert操作:

Delete操作:

原因:无权限

测试管理员用户:

mysql -uA001 -p123456

use fruitshop;

show tables;

select* from customers;

update customers set c_name="Evan",c_address="WZ Mall",c_city="Shenzhen",c_zip=521000,c_contact=666666,c_email="LU@666" where c_id=10003;

insert into customers values(10005,"Charlie","NOVATEN INC","GQ City",233333,555555,"love@sweety");

delete from customers where c_id=10000;

显示表:

Select操作:

Update操作:

Insert操作:

Delete操作:

原因:c_id具有外键约束

三、小结

1.遇到的问题及解决过程

a. 用户权限设置问题:通过创建视图,让用户获得部分对视图操作的权限

b. 用户账号切换问题:命令行quit退出,重新输入账号密码进行登录

c. 角色与用户权限问题:学习相关语法,让用户获得角色的权限

  1. 产生的错误及原因分析

    在测试用户的增删改查时,不能完成增删改查功能

    原因:未授权,c_id的相关语句具有外键约束

  1. 体会和收获。

通过本次博客,对数据库进行一些列操作,掌握参照完整性约束、设计用户子模式等功能,并且根据实际需要创建了不同的用户授以不同的权限,以此来针对不同级别的用户定义不同的视图,保证了系统的安全性。同时在这个过程中有遇到很多的问题与错误,但是都在不断的实验与互联网的帮助下解决了出现的问题与错误。感受到即使是表面上看上去很简单的题目,要去实践也会遇到很多不容易解决的问题与错误。总的来说收获满满。

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

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

相关文章

STM32——串口实验(非中断)

需求: 接受串口工具发送的字符串,并将其发送回串口工具。 硬件接线: TX -- A10 RX -- A9 一定要记得交叉接线!! 串口配置: 1. 选定串口 2. 选择模式 异步通讯 3. 串口配置 4. 使用MicroLIB库 从…

数据结构 | 大根堆

思维导图 代码 #include<stdio.h> #include<iostream> using namespace std; void HeapAdjust(int* arr, int start, int end) {int temp arr[start];for (int i 2 * start 1; i < end; i 2 * i 1) //end可以取到等于 因为它是最后一个元素{if (i<end…

Spring boot注解

1.RestController RestController 注解用于标识一个类,表示该类的所有方法都返回JSON或XML响应&#xff0c;而不是视图页面。它是Controller和ResponseBody的组合 2.RequestMapping RequestMapping 注解用于映射HTTP请求到控制器方法或类。它可以用于类级别和方法级别,用于定…

UI5 development on VS Studio code

今天来分享一下如何VS studio code 上UI5开发环境的搭建 1.安装Node.js 路径&#xff1a;Node.js 因安装步骤较为简单&#xff0c;故不在此赘述。 验证方法如下&#xff1a;WINR-->CMD--->node --version 出现下图即可 2. 安装UI5 CLI (为了后面我们方便使用UI5 的命令…

向ChatGPT提特殊问题,可提取原始训练数据!

随着ChatGPT等模型的参数越来越大&#xff0c;预训练数据也呈指数级增长。谷歌DeepMind、华盛顿大学、康奈尔大学等研究人员发现,无论是开源还是闭源模型&#xff0c;在训练过程中皆能记住一定数量的原始训练数据样本。 如果使用特定的恶意攻击&#xff0c;便能轻松地从模型中…

python pip 相关缓存清理(windows+linux)

pip会大量缓存&#xff0c;如果全部堆在系统盘&#xff0c;会造成别的无法使用 windows和linux通用 一、linux linux是在命令行操作 1.查看缓存位置 pip cache dir我这里默认是在/root/.cache/pip 2.查看大小 du -sh /root/.cache/pip结果如下&#xff1a; 3.清理&#…

深入理解 Go Channel:解密并发编程中的通信机制

一、Channel管道 1、Channel说明 共享内存交互数据弊端 单纯地将函数并发执行是没有意义的。函数与函数间需要交互数据才能体现编发执行函数的意义虽然可以使用共享内存进行数据交换&#xff0c;但是共享内存在不同的goroutine中容易发送静态问题为了保证数据交换的正确性&am…

Windows的C盘爆掉了怎么办?

本文参考&#xff1a; C盘太满怎么办&#xff1f;亲测8种好用方法&#xff01; 如果C盘的分区爆掉了&#xff0c;变红色了&#xff0c;是时候该处理这个问题了&#xff0c;解决你的C盘焦虑&#xff01; 第一招&#xff1a;删除C盘文件 首先你会想到清理C盘里面的文件&#x…

数据结构之----数组、链表、列表

数据结构之----数组、链表、列表 什么是数组&#xff1f; 数组是一种线性数据结构&#xff0c;它将相同类型的元素存储在连续的内存空间中。 我们将元素在数组中的位置称为该元素的索引。 数组常用操作 1. 初始化数组 我们可以根据需求选用数组的两种初始化方式&#xff…

机器视觉系统选型-同轴光源分类及应用场景

同轴光源 从与相机同轴的方向均匀照射漫射光 Mark点定位条码识别二维码识别反光物体表面缺陷检测 高亮同轴光源 照射光线与水平方向成低角度夹角Mark点定位反光件表面凹坑、损伤、缺陷印刷电路板二维码识别 平行同轴光源 从与相机同轴方向照射平行度高 的平行光尺寸测量玻璃检…

团队git操作流程

项目的开发要求 项目组厉员每天代码提交不少于20次企业项目开发代码的每天的提交一般提交3-5次代码仓库的管理 git的基础操作流程 命令模式 git push插件模式 vscode git graphGUI软件管理模式 sourcetree git在项目团队化开发中的应用 master(一般是不动的)dev (主要是拿…

2. 如何通过公网IP端口映射访问到设备的vmware虚拟机的ubuntu服务器

文章目录 1. 主机设备是Windows 11系统2. 安装vmware虚拟机3. 创建ubuntu虚拟机&#xff08;据说CentOS 7 明年就不维护了&#xff0c;就不用这个版本的linux了&#xff09;4. 安装nginx服务:默认端口805. 安装ssh服务:默认端口226. 设置主机 -> ubuntu的端口映射7. 设置路由…

【Amis Low Code 结合FastAPI进行前端框架开发】

官方文档 封装思想 直接复制官网json数据即可开发每个json中的接口由fastapi 转发&#xff08;透传&#xff09;使其开发模式与前端思维一致 基础组件 from amis import Page, Service, App from pydantic import BaseModel, Field from fastapi import FastAPI, Request, …

c++学习之智能指针

前言&#xff1a;在此之前我们已经学习到了异常的使用&#xff0c;虽然异常在大部分情况都还可以&#xff0c;但也存在太多缺陷&#xff0c;对于异常的问题&#xff0c;入内存泄漏&#xff0c;在复杂的场景下使用起来也是非常麻烦。为了更好的解决这些问题&#xff0c;c11中引入…

C语言—每日选择题—Day45

第一题 1. 以下选项中&#xff0c;对基本类型相同的指针变量不能进行运算的运算符是&#xff08;&#xff09; A&#xff1a; B&#xff1a;- C&#xff1a; D&#xff1a; 答案及解析 A A&#xff1a;错误&#xff0c;指针不可以相加&#xff0c;因为指针相加可能发生越界&…

【华为数据之道学习笔记】4-2信息架构原则:建立企业层面的共同行为准则

信息架构承载了企业如何管理数据资产的方法&#xff0c;需要从整个企业 层面制订统一的原则&#xff0c;这些原则不仅是对数据专业人员的要求&#xff0c;也是对业务的要求&#xff0c;因为业务才是真正的数据Owner。所以&#xff0c;公司所有业务部门都应该共同遵从信息架构原…

Redis安装教程

文章目录 Redis安装说明1.单机安装Redis1.1.安装Redis依赖1.2.上传安装包并解压1.3.启动1.3.1.默认启动1.3.2.指定配置启动1.3.3.开机自启 2.Redis客户端2.1.Redis命令行客户端2.2.图形化桌面客户端2.2.1.安装2.2.2.建立连接 Redis安装说明 大多数企业都是基于Linux服务器来部…

LeetCode(58)随机链表的复制【链表】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 随机链表的复制 1.题目 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节…

kafka常见问题处理

1. 如何防⽌消息丢失 在生产者层面&#xff0c;我们有个ack参数确认机制 设置成-1&#xff0c;也就是副本全部同步了leader才发送ack&#xff0c;这样确保leader和副本挂掉只剩一个还能 保证消息不丢失 消费者&#xff1a; 把⾃动提交改成⼿动提交 2. 如何防⽌重复消费 在…

Orange Comet利用Sui Kiosk进行游戏道具和知识产权保护

Orange Comet与AMC合作开发基于《行尸走肉》系列的NFT和游戏&#xff0c;首要关注的问题就是保护AMC的知识产权。利用Sui的Kiosk原语不仅让Orange Comet向AMC保证其资产安全&#xff0c;而且为即将推出的《行尸走肉大陆》游戏打开了无限的可能性。 Kiosk是Sui上的一个原语&…