数据库——安全性练习

登录验证

要求能够以2种登录方式登陆( Windows 身份验证和SQL Server身份验证)。

解决方案

由于我的作业是基于 Mac OS X 系统下,用 mysql workbench 完成,故下面展示如何在Mac上登陆mysql workbench。

  1. 首先打开mysql workbench可以看到如下登录界面,选择 loacl instance ,实现Mac OS X系统本地登陆,操作步骤如下:

Alt text

Alt text

Alt text

  1. 第二次,打开mysql workbench,选择 nlz 用户登陆,实现mysql workbench身份验证登陆,操作步骤如下:

Alt text

Alt text

权限分配

新建登陆log1,新建用户u1,新建角色r1,授予角色 r1 对表S的select权限,将角色r1赋给用户u1,验证用户u1只具有表S的select权限,收回用户u1的角色r1,验证用户u1不具有表S的select权限。

要注意的是,角色 rolemysql8.0 版本之后才有的,在 mysql5.x 版本里不存在 role

解决方案

  1. 新建登陆log1如下:

Alt text

  1. 新建用户u1:
1
CREATE USER 'u1'@'localhost';

Alt text

  1. 新建角色r1:
1
CREATE role r1;
  1. 授予角色 r1 对表books的select权限:
1
grant select on bookmis.books to r1;
  1. 将角色r1赋给用户u1:
1
grant r1 to 'u1'@'localhost'
  1. 激活角色:
    激活之前,没有角色处于运行状态,状态如下:

Alt text

1
SET DEFAULT ROLE ALL TO 'u1'@'localhost';

通过执行上述代码实现对u1用户的相关角色的激活操作,激活之后通过代码:SELECT CURRENT_ROLE()查询活动的角色,如下:

Alt text

  1. 验证用户u1只具有表books的select权限:
1
SHOW GRANTS FOR 'u1'@'localhost'  USING 'r1';
输出u1具有的权限如下,可以看出,其只具有bookmis.books的select权限.

Alt text

在u1用户上执行对books执行select操作,查询成功,结果如下:

Alt text

继续执行查询readers表的操作,查询失败,结果如下:

Alt text

  1. 收回用户u1的角色r1,验证用户u1不具有表books的select权限:
1
REVOKE r1 FROM 'u1'@'localhost';
回收r1之后我们执行代码:SHOW GRANTS FOR 'u1'@'localhost'  USING 'r1'查看u1现在具有的权限,结果如下:

Alt text

验证r1被回收,所以u1也丧失了相应的权限。
小手一抖⬇️