数据库实验-图书销售管理系统数据库安全管理

news2024/11/15 12:45:09

一、实验二:图书销售管理系统数据库安全管理

三、实验目的

了解该DBMS系统对数据库管理的内容与方法,特别是理解数据库安全机制和作用,以及PostgreSQL数据库角色管理、用户管理、权限管理的基本方法,培养数据库管理能力。在图书销售管理系统数据库中,创建必要的角色和用户,并完成上述角色与用户的权限管理。

四、实验原理

在PostgreSQL 数据库系统中,实现数据存取安全模型是确保数据库安全访问的基本手段。在数据安全存取模型中,需要设计数据库的角色、角色的数据库对象操作权限、数据库用户、数据库用户的角色赋予,以及数据库对象的操作权限集合。根据设计的数据安全存取模型,系统管理员使用数据库管理工具pgAdmin去创建角色,授予系统管理权限和对象操作权限。此外,系统管理员还需要创建用户,并对用户赋予必要的角色。之后,用户就可以对数据库对象进行访问。

五、实验内容

使用pgAdmin4数据库管理工具对图书销售管理系统数据库进行数据库安全管理,具体实验内容如下:

1.针对图书销售管理系统数据库应用需求,设计数据存取权限控制模型。

2.在数据库中,创建客户(R_Customer)、商家(R_Seller)角色。

3.在数据库中,根据业务规则为客户(R_Customer)、商家(R_Seller)角色赋予数据库对象权限。

4.在数据库中,分别创建客户用户U_Customer、商家用户U_Seller。

5.分别为客户用户U_Customer、商家用户U_Seller分派客户(R_Client)、商家(R_Seller)角色。

6.分别以客户用户U_Customer、商家用户U_Seller身份访问图书销售管理数据库,验证所实现数据存取权限控制模型的正确性。

在实验计算机上,利用pgAdmin4数据库管理工具及SQL语句,完成图书销售管理系统数据库安全管理,同时记录实验过程的步骤、操作、运行结果界面等数据,为撰写实验报告提供素材。

六、实验设备及环境

“数据库原理及应用”实验所涉及的机房硬件设备为pc计算机、服务器以及网络环境,pc计算机与服务器在同一局域网络。

操作系统: Windows10 / Windows 11

管理工具: pgAdmin4

DBMS系统: PostgreSQL 15.1

七、实验步骤

(1)针对图书销售管理系统数据库,设计数据存取权限控制模型。根据业务逻辑及实际需要为商家、客户分配在每个数据库表上的操作权限。

(2)在数据库中,创建客户(R_Customer)、商家(R_Seller)角色。采用SQL语句执行方式,创建客户R_Customer、商家R_Seller角色。

(3)在数据库中,根据业务规则为客户(R_Customer)、商家(R_Seller)角色赋予数据库对象权限。利用Grant关键词对客户R_Customer、商家R_Seller角色,参考设计的数据存取权限控制模型,赋予对应的所定义的数据库对象权限。

(4)在数据库中,分别创建客户用户U_Customer、商家用户U_Seller。

(5)分别为客户用户U_Customer、商家用户U_Seller分派客户(R_Client)、商家(R_Seller)角色。

(6)分别以客户用户U_Customer、商家用户U_Seller身份访问图书销售管理数据库,验证所实现数据存取权限控制模型的正确性。

八、实验数据及结果分析

(1)针对图书销售管理系统数据库应用需求,设计数据存取权限控制模型。

创建客户角色安全模型,如下图1-1所示。

 

图1-1 客户角色安全模型

创建商家角色安全模型,如下图1-2所示。

 

图1-2 商家角色安全模型

  1. 在数据库中,使用SQL语句创建客户(R_Customer)、商家(R_Seller)角色,并设置登录密码均为‘123456’,代码如下所示。

代码1 创建角色代码

create role R_Customer with

login

nosuperuser

nocreatedb

nocreaterole

noinherit

noreplication

nobypassrls

connection limit -1

password '123456';

create role R_Seller with

login

nosuperuser

nocreatedb

nocreaterole

noinherit

noreplication

nobypassrls

connection limit -1

password '123456';

创建结果如下图2-1所示。

 

图2-1 创建客户角色跟商家角色

  1. 在数据库中,根据业务规则使用GRANT语句为客户(R_Customer)、商家(R_Seller)角色赋予数据库对象权限,其中客户角色只能对Book、Sale、Customer三个表进行查询操作,商家角色则可以对Book、Sale、Customer三个表进行增删改查,代码如下所示。

代码2 为角色授权代码

grant select on Book to R_Customer;

grant select on Sale to R_Customer;

grant select on Customer to R_Customer;

grant insert,delete,select,update on Book to R_Seller;

grant insert,delete,select,update on Sale to R_Seller;

grant insert,delete,select,update on Customer to R_Seller;

授权结果如下图3-1所示。

 

图3-1 授权给客户角色、商家角色

  1. 在数据库中,分别创建客户用户U_Customer、商家用户U_Seller,设置登陆密码‘123456’,并分别为客户用户U_Customer、商家用户U_Seller分派客户(R_Customer)、商家(R_Seller)角色,代码如下所示。

代码3 创建用户代码

Create user U_Customer with

Login

Connection limit -1

Password ‘123456’

In role R_Customer;

Create user U_Seller with

Login

Connection limit -1

Password ‘123456’

In role R_Seller;

如下图4-1所示。

 

图4-1 客户、商家用户分配给客户、商家角色

  1. 分别以客户用户U_Customer、商家用户U_Seller身份访问图书销售管理数据库,验证所实现数据存取权限控制模型的正确性。

首先在psql终端界面以客户用户的身份登录数据库,并对Book、Sale、Customer三个表进行select查询操作,结果如下图5-1所示。

 

图5-1 客户用户查询三个关系表

由上图可见,客户用户具有对三个关系表的查询操作权限,之后对三个表分别进行insert、delete、update操作,结果如下图5-2所示。

 

图5-2 客户用户除查询外其他操作

由上图可见客户用户对三个表没有增加、删除、修改的权限,这与我们之前授予客户角色的权限一致。

以商家用户的身份登录数据库,首先对Book表进行增删改查操作,如下图5-3所示。

 

图5-3 商家用户对Book表增删改查

然后对Sale表进行增删改查的操作,结果如下图5-4所示。

 

图5-4 商家用户对Sale表增删改查

最后对Customer表进行增删改查的操作,结果如下图5-5所示。

 

图5-5 商家用户对Customer表增删改查

由上述可知,商家用户具有对Book、Sale、Customer三个表的增删改查的权限,与之前所赋予的权限一致。

九、总结及心得体会

通过本次实验,我了解了该DBMS系统对数据库管理的内容与方法,特别是理解了数据库安全机制和作用,以及PostgreSQL数据库角色管理、用户管理、权限管理的基本方法,培养了我的数据库管理能力。同时我也能够使用power designer工具根据相应的业务要求创建数据库的存取控制安全模型。也能够使用SQL语句为数据库创建相应的角色跟用户,并为他们授予一定的权限。同时,我也学会了如何使用psql登录用户账号密码以此来访问数据库

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

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

相关文章

CV什么时候能迎来ChatGPT时刻?

卷友们好,我是rumor。 最近看了几篇CV的工作,肉眼就感受到了CVer们对于大一统模型的“焦虑”。 这份焦虑让他们开始尝试统一一切,比如: 统一复杂的自动驾驶任务的优化目标[1],来自今年CVPR最佳论文。统一典型的CV任务&…

3s定时循环启动弹窗,子窗体3s后自动关闭功能实现

只贴关键代码: 1、父窗体关键代码 private void doAt1AM(object state){//要执行的任务,直接button调用即可//执行功能...的任务spring_Form spr_Form new spring_Form();spr_Form.Txt "陈先生" ";到1号窗口取药";spr_Form.Show…

WPF中的Behavior及Behavior在MVVM模式下的应用

WPF中的Behavior及Behavior在MVVM模式下的应用 在WPF中,Behaviors(行为)是一种可重用的组件,可以附加到任何UI元素上,以添加特定的交互行为或功能。Behaviors可以通过附加属性或附加行为的方式来实现。 Behavior并不…

【3Ds Max】使用捕捉工具、轴约束工具实现点的精准对齐

目录 问题 解决步骤 一、在XYZ轴上都对齐 二、只在一或两个轴上对齐 问题 举个例子,比如我想让如下的两个立方体的顶点对齐(在同一位置(XYZ轴都对齐),或仅在一个或两个轴上对齐): 主要使…

【PostgreSQL 数据库技术峰会(成都站)】云原生虚拟数仓 PieCloudDB Database 的架构和关键模块实现...

2023年6月17日,中国开源软件推进联盟 PostgreSQL 分会在成都举办了数据库技术峰会。此次峰会以“新机遇、新态势、新发展”为主题,结合当下信创热潮、人工智能等产业变革背景,探讨 PostgreSQL 数据库在这些新机遇下的发展前景。峰会邀请众多行…

PHP 设备管理系统 mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 设备管理系统 是一套完善的WEB设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 视频演示 PHP 设备管理系统 mysql数据库web结构apache 代码下载 https://download.csd…

70、基于51单片机智能手环心率计步温湿度蓝牙APP监控系统设计(程序+原理图+参考论文+开题报告+元器件清单等)

摘 要 计步器是一种颇受欢迎的日常锻炼进度监控器,可以激励人们挑战自己,增强体质,帮助瘦身。早期设计利用加重的机械开关检测步伐,并带有一个简单的计数器。晃动这些装置时,可以听到有一个金属球来回滑动&#xff0c…

Ansible快速上手

使用Ansible-快速上手 ping模块简介: 该模块不使用ICMP ping,而是使用基于python的模块完成。 语法: ansible 主机IP/或在清单中的名称 -m(表示选择模块) ping (表示使用ping模块)清单文件: [dev] 192.…

【运维工程师学习】安装VMware并创建Centos8虚拟机(保姆级教程)

安装虚拟机(VMware)保姆级教程(附安装包) 下载链接安装步骤创建Centos8虚拟机 下载链接 百度网盘链接:https://pan.baidu.com/s/1pWSsCnP_2Yfe7dRCPQitCg 提取码:6666 Centos8下载:https://nex…

0基础学习VR全景平台篇,第51篇:高级功能-自定义菜单

大家好,欢迎观看蛙色VR官方系列——后台使用课程! 本期为大家带来蛙色VR平台,高级功能-自定义菜单! 功能位置示意 一、本功能将用在哪里? 自定义菜单,是显示在VR漫游作品底部和顶部各种可点击的图标按钮。…

Liunx 安装 Nginx

1.准备Nginx所需依赖 yum install gcc-cyum install -y zlib zlib-develyum install -y pcre pcre-develyum install -y openssl openssl-devel2.下载tar并解压 wget http://nginx.org/download/nginx-1.23.0.tar.gz tar -xvf nginx-1.23.0.tar.gz 3.安装Nginx cd nginx-1.2…

mmdetection1.4训练fasterrcnn

mmdetection1.4训练fasterrcnn 指定参数文件urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)>No such file or directory: data/coco/annotations/instances…

【C/C++实现进程间通信 一】共享内存方式

前情回顾&#xff1a; 上一期已经讲解过了进程的相关概念以及进程间通信的实现原理&#xff0c;下面仅展示相关代码。 思路&#xff1a; /* 本项目主要用于对同主机上以共享内存方式进行进程间通信的测试 。 1.包含一个外部程序 publisherDemo.exe 以及 subscriberDemo.exe。…

Selenium 使用已开启的浏览器执行测试

实际测试工作中可能遇到某些需要使用手动开启浏览器执行测试的情况&#xff0c;比如某些网站登录需要手机短信验证&#xff0c;为了跳过这步&#xff0c;可以手动登录网站&#xff0c;在已登录的页面继续测试 1、找到本地安装的浏览器启动路径&#xff0c;例如Chrome C:\Progra…

无锡斑目信息技术有限公司与无锡漫途科技有限公司签署战略伙伴合作协议!

2023年6月21日无锡斑目信息技术有限公司与无锡漫途科技有限公司签署战略伙伴合作协议。双方将在数字工厂、智慧城市等领域凭借各自的优势进行全方面的合作。 漫途传感科技总经理田吉成、无锡艾森汇智科技总经理钱小伟、无锡数字城市建设发展工业互联网事业部部长王威共同参加签…

注解实现防止重复提交(Aop)

一、前言 书接上回&#xff0c;上次实现了springboot整合redis&#xff0c;在使用过程中就避免不了重复提交的场景。springboot整合redis_crazyK.的博客-CSDN博客 重复提交的场景&#xff1a; 用于用户误操作&#xff0c;多次点击表单提交按钮由于网速等原因造成页面卡顿&am…

软考高级架构师笔记-8软件工程

目录 1. 前言 & 考情分析2. 软件工程概述3. 能力成熟度模型4. 软件过程模型4.1 敏捷模型4.2 统一过程模型(RUP)5. 逆向工程6. 需求工程7. 系统设计8. 测试基础知识9. 系统运行与维护10. 净室软件工程11. 结语1. 前言 & 考情分析 前文回顾: 软考高级架构师笔记-1计算机…

C++—指针与引用的区别与联系

一、为什么要有引用&#xff08;C语言没有&#xff09; ▪ 因为引⽤和值有⼀样的语义&#xff0c;而指针不是 ▪ 不存在空引⽤&#xff0c;必须初始化&#xff1b;保证值不变&#xff0c;保证编译器更加安全 ▪ 加减号、赋值操作符&#xff0c;作⽤在引用上会触发对象的操作符重…

PHP 人才信息与招聘系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 人才信息与招聘系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为PHP APACHE&#xff0c;数据 库为mysql5.0&#xff0c;使用php语言开发。…

Qt笔记-自定义QSet,QHash的Key

官方文档已经说得很详细了。 If you want to use other types as the key, make sure that you provide operator() and a qHash() implementation. Example:#ifndef EMPLOYEE_H#define EMPLOYEE_Hclass Employee{public:Employee() {}Employee(const QString &name, con…