【数据库】实验 2.1 自主存取控制实验

该博客围绕数据库自主存取控制权限展开实验。实验目的是掌握权限定义和维护方法,内容包括定义用户、角色,分配与回收权限并验证。给出两种方案,方案一用SYSTEM超级用户操作,方案二用SYSTEM创建经理用户再由其操作,最后给出实验总结。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)实验目的

掌握自主存取控制权限的定义和维护方法。

(2)实验内容和要求

定义用户、角色,分配权限给用户、角色,回收权限,以相应的用户名登录数据库验证权限分配是否正确。选择一个应用场景,使用自主存取控制机制 设计权限分配。可以采用两种方案。

方案一:采用 SYSTEM 超级用户登录数据 库,完成所有权限分配工作,然后用相应用户名登录数据库以验证权限分配正 确性;

方案二:采用 SYSTEM 用户登录数据库创建三个部门经理用户,并分配 相应的权限,然后分别用三个经理用户名登录数据库,创建相应部门的 USER, ROLE,并分配相应权限。

(3)实验重点和难点

实验重点:定义角色,分配权限和回收权限。

实验难点:实验方案二实现权限的再分配和回收。

(4)实验过程

应用场景:设有一个企业,包括采购、销售和客户管理等三个部门,采购部门经理David,采购员Jeffery;销售部门经理Tom,销售员Jane;客户管理部门经理Kathy,职员Mike。该企业一个信息系统覆盖采购、销售和客户管理等三个部门的业务,其数据库模式为TPC-H数据模式。

用户权限
David对本部门的信息具有完全控制权限,对其他部门的信息具有查询权。经理有权给本部门职员分配权力。
Jeffery本部门信息具有查看、插入权限
Tom对本部门的信息具有完全控制权限,对其他部门的信息具有查询权。经理有权给本部门职员分配权力。
Jane本部门信息具有查看、插入权限
Kathy对本部门的信息具有完全控制权限,对其他部门的信息具有查询权。经理有权给本部门职员分配权力。
Mike本部门信息具有查看、插入权限
创建表格:

在这里插入图片描述

方案一

采用 SYSTEM 超级用户登录数据 库,完成所有权限分配工作,然后用相应用户名登录数据库以验证权限分配正 确性;

1.创建用户

在这里插入图片描述

补充:

CREATE USER 'niuben'@'localhost' IDENTIFIED BY '123456';

CREATE USER 'niuben'@'192.168.1.101_' IDENDIFIED BY '123456';
 
CREATE USER 'niuben'@'%' IDENTIFIED BY '123456';
 
CREATE USER 'niuben'@'%' IDENTIFIED BY '';
 
CREATE USER 'niuben'@'%';

host: 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
‘%’ :哪台主机上可以登录mysql,%是通配符指的是任意IP,也可以指定具体的IP,或者localhost代表本机才可以登录。
password: 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器例子

2.查看已有用户

在这里插入图片描述

3.创建角色并分配权限

角色跟用户的区别在于:角色没有登录权限,而用户有,然后其它的跟用户操作基本一样。

  • 为各部门分别创建一个查询角色,并分配相应的查询权限

在这里插入图片描述

  • 为各部门分别创建一个职员角色,对本部门信息具有查看、插入权限

    在这里插入图片描述

  • 为各部门创建一个经理角色,相应角色对本部门的信息具有完全控制权限,对其他部门的信息具有查询权。经理有权给本部门职员分配权力。

    在这里插入图片描述

4.给用户分配权限
  • 给各部门经理分配权限

    指定了with admin option子句,则获得某种权限的角色或用户还可以把这种权限再授予其他的角色
    在这里插入图片描述

  • 给各部门职员分配权限

    在这里插入图片描述

5.回收角色或用户权限
  • 收回客户经理角色的销售信息查看权限

在这里插入图片描述

  • 回收Mike的客户部门职员权限

    在这里插入图片描述

6.验证权限分配正确性
  • ​ 以David用户名登陆数据库,验证采购部门经理的权限

    • 退出root,以David作为用户登陆:
      在这里插入图片描述

    • 查看采购表

      输入指令发现无法没有权限,查了资料发现是角色没有激活
      在这里插入图片描述

      登录root激活所有角色后就可以正常使用了

      set global activate_all_roles_on_login=ON;
      

在这里插入图片描述

方案二

采用 SYSTEM 用户登录数据库创建三个部门经理用户,并分配 相应的权限,然后分别用三个经理用户名登录数据库,创建相应部门的 USER, ROLE,并分配相应权限。

方案二和方案一的区别仅仅是各部门的user、role不再由root创建,而是用root创建的各个部门经理来创建。

三个部门的实现过程其实是一样的。为了减少赘述,方案二仅以采购部为例进行实现。

1.新建数据库lab2.2

在这里插入图片描述

2.创建用户

在这里插入图片描述

3.创建角色并分配权限

在这里插入图片描述

4.以DAVID用户名登陆数据库

在这里插入图片描述

5.创建用户

在这里插入图片描述

6.创建角色并分配权限

在这里插入图片描述

8.验证权限分配正确性

在这里插入图片描述

总结:

1.修改权限后要输入flush privileges刷新;

2.all 不包括创建用户权限,要单独赋予全局创建用户权限

在这里插入图片描述

3.根据报错提示去修改

4.使用Navicat操作,查看SQL预览获得SQL语句

5.最最简单的方式! 直接使用Navicat进行可视化操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值