一、实验二:图书销售管理系统数据库安全管理
三、实验目的
了解该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 商家角色安全模型
- 在数据库中,使用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 创建客户角色跟商家角色
- 在数据库中,根据业务规则使用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 授权给客户角色、商家角色
- 在数据库中,分别创建客户用户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 客户、商家用户分配给客户、商家角色
- 分别以客户用户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登录用户账号密码以此来访问数据库