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

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

三、实验目的

了解该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.hqwc.cn/news/638.html

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

相关文章

Mysql(Linux数据库或者在Navicate中)

Mysql数据库组成 服务端:主要存储数据,并接收用户发过来的SQL语句,并执行结果返回给客户端 客户端:下发用户要执行的sql语句,并显示服务器返回的执行结果 命令行数据库连接方式 mysql -h 数据库 IP -P 端口号 -u 数据库登录用户名 -p 数据库登录密码 -h不加表示为本机,-P不…

Java-String、StringBuffer、StringBuilder区别及相关面试题

目录 一、引言二、String类的基本介绍2.1 创建String对象2.2 字符串的拼接和连接2.3 字符串的比较2.4 字符串的截取和替换2.5 字符串的查找和匹配2.6 创建格式化字符串API文档 三、StringBuffer类的基本介绍3.1 创建StringBuffer对象3.2 字符串的拼接和连接3.3 字符串的插入和删…

简单易用多git服务器ssh密钥配置管理

文章目录 前言一、什么是ssh-key二、配置步骤添加ssh-key配置多ssh-key 总结 前言 快速理解如何配置管理多个git服务器的ssh,当我们有多个git帐号时会涉及如何管理不同的remote使用不同的git账户登陆推送 当前repo的origin remote是github,我们在推送时…

pytorch量化库使用(2)

FX Graph Mode量化模式 训练后量化有多种量化类型(仅权重、动态和静态),配置通过qconfig_mapping ( prepare_fx函数的参数)完成。 FXPTQ API 示例: import torch from torch.ao.quantization import (ge…

【MySQL数据库 | 第十九篇】SQL性能分析工具

目录 前言: SQL执行频率: 慢查询日志: profile: profile各个指令: 总结: 前言: 本篇我们将为大家讲解SQL性能的分析工具,而只有熟练的掌握了性能分析的工具,才可以更…

C语言学习(二十九)---内存操作函数

在上一节内容中,我们学习了有关字符串操作的函数,其中分为了限制长度和不限制长度两种方式,虽然上节内容已经在很大程度上有助于程序的实现,但是其有一个致命的缺陷,聪明的你一定已经猜到了吧,对的&#xf…

一面、二面、三面有什么区别?

很多公司面试都分一面、二面、三面甚至更多,大家可能会好奇,为什么要面这么多面,每一面又有啥区别呢? 首先我来回答下为什么要这么多面,最核心的是最后3点: 如果光是一个人面,担心会看走眼&…

Python强类型编程

Python是一门强类型的动态类型语言,具体如下特性: 可以动态构造脚本执行、修改函数、对象类型结构、变量类型但不允许类型不匹配的操作 第一个例子体现动态性:用字符串直接执行代码,动态构建了一个函数并执行,甚至给…

IDEA创建一个Servlet项目(tomcat10)

一、创建maven项目 org.apache.maven.archetypes:maven-archetype-webapp 二、增加Servlet依赖 tomcat9及以前依赖 <!--加入servlet依赖&#xff08;servlet的jar&#xff09;--><dependency><groupId>javax.servlet</groupId><artifactId>ja…

设计模式-抽象工厂模式

抽象工厂模式 1、抽象工厂模式简介2、具体实现 1、抽象工厂模式简介 抽象工厂模式(Abstract Factory Pattern)在工厂模式尚添加了一个创建不同工厂的抽象接口(抽象类或接口实现)&#xff0c;该接口可叫做超级工厂。在使用过程中&#xff0c;我们首先通过抽象接口创建不同的工厂…

NoSQL之 Redis配置与优化

文章目录 一、关系数据库与非关系型数据库关系型数据库&#xff1a;非关系型数据库关系型数据库和非关系型数据库区别&#xff1a;非关系型数据库产生背景 二、Redis简介Redis 具有以下几个优点&#xff1a;使用场景&#xff1a;哪些数据适合放入缓存中Redis为什么这么快 三、R…

4、数据库操作语句:聚合函数

目录 1、定义 2、常用的聚合函数 1&#xff09;Avg/sum&#xff1a;只适用于数值类型的字段&#xff08;或变量&#xff09;。 2&#xff09;Max/min:适用于数值类型、字符串类型、日期时间类型的字段&#xff08;或变量&#xff09; 3&#xff09;Count&#xff1a; ①作…