实验五-数据库安全性

个人同名博文传送门https://blog.dhbxs.top/posts/42927077.html

实验基本要求

1.知道数据库安全性采用的方法。
2.掌握数据库用户的创建。
3.掌握数据库的权限的分配。
4.掌握数据表角色的操作。

实验概述

1.创建不同的用户;
2.分配对象权限给不同的用户;
3.创建角色;
4.授予角色权限;

实验环境

MySQL5.7;MySQL8.0;Navicat15;

实验内容

该实验全部基于实验二-数据定义

(1)创建用户U1,U2,U3,U4,U5,U6,U7,并设置密码;

CREATE USER 'u1'@ 'localhost' IDENTIFIED by 'u1password';
CREATE USER 'u2'@ 'localhost' IDENTIFIED by 'u2password';
CREATE USER 'u3'@ 'localhost' IDENTIFIED by 'u3password';
CREATE USER 'u4'@ 'localhost' IDENTIFIED by 'u4password';
CREATE USER 'u5'@ 'localhost' IDENTIFIED by 'u5password';
CREATE USER 'u6'@ 'localhost' IDENTIFIED by 'u6password';
CREATE USER 'u7'@ 'localhost' IDENTIFIED by 'u7password';

这里统一设置密码格式为用户 + password关键字,便于记忆,用户都为本地用户localhost

(2)把查询Student表权限授给用户U1;

GRANT SELECT ON TABLE stu.student TO 'u1' @ 'localhost';

我的数据库名叫做stu,所以指定stu数据库中的student表stu.student

(3)把对Student表和Course表的全部权限授予用户U2和U3;

GRANT ALL PRIVILEGES ON stu.student TO 'u2'@ 'localhost','u3'@ 'localhost';
GRANT ALL PRIVILEGES ON stu.course TO 'u2'@ 'localhost','u3'@ 'localhost';

studentcourse是两个表,这里分开设置。

(4)把查询Student表和修改学生学号的权限授给用户U4;

GRANT SELECT ON stu.student TO 'u4'@ 'localhost';
GRANT UPDATE(Sno) ON stu.student TO 'u4'@ 'localhost';

学生学号列名为Sno

(5)把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户;

GRANT INSERT ON stu.sc TO 'u5'@ 'localhost' WITH GRANT OPTION;

允许授权其他用户,只需在原来的基础上加上WITH GRANT OPTION关键字即可。

(6)把对表SC的INSERT权限授予U6用户,并允许他再将此权限授予其他用户;

GRANT INSERT ON stu.sc TO 'u6'@ 'localhost' WITH GRANT OPTION;

(7)把对表SC的INSERT权限授予U7用户,并不允许他再将此权限授予其他用户;

GRANT INSERT ON stu.sc TO 'u7'@ 'localhost';

(8)把用户U4修改学生学号的权限收回。

REVOKE UPDATE(Sno) ON stu.student FROM 'u4'@ 'localhost';

(9)把用户U5对SC表的INSERT权限收回。

REVOKE INSERT ON stu.sc FROM 'u5'@ 'localhost';

(10)通过角色来实现将一组权限授予一个用户。

经查阅官方参考手册得知在MySQL5.7版本中,并没有角色功能,所以通过虚拟机重新安装了MySQL8.0的版本以及Navicat15。以下MySQL语句全部基于MySQL8.0

CREATE ROLE 'R1'@ 'localhost';
SET DEFAULT ROLE ALL TO 'root'@ 'localhost';
GRANT SELECT, UPDATE, INSERT ON TABLE Student TO 'R1'@ 'localhost';
GRANT 'R1'@ 'localhost' TO 'u1'@ 'localhost';

这一步是分4小步实现的:
1.首先创建一个角色 R1;
2.然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限;
3.激活角色;
4.将这个角色授予用户u1,使他具有角色R1所包含的全部权限;

(11)角色的权限修改。

GRANT DELETE ON TABLE Student TO 'R1'@ 'localhost';

DELETE权限授予R1角色。

实验所用SQL语句汇总

CREATE USER 'u1'@ 'localhost' IDENTIFIED by 'u1password';
GRANT SELECT ON TABLE stu.student TO 'u1'@ 'localhost';

CREATE USER 'u2'@ 'localhost' IDENTIFIED by 'u2password';
CREATE USER 'u3'@ 'localhost' IDENTIFIED by 'u3password';
GRANT ALL PRIVILEGES ON stu.student TO 'u2'@ 'localhost','u3'@ 'localhost';
GRANT ALL PRIVILEGES ON stu.course TO 'u2'@ 'localhost','u3'@ 'localhost';

CREATE USER 'u4'@ 'localhost' IDENTIFIED by 'u4password';
GRANT SELECT ON stu.student TO 'u4'@ 'localhost';
GRANT UPDATE(Sno) ON stu.student TO 'u4'@ 'localhost';

CREATE USER 'u5'@ 'localhost' IDENTIFIED by 'u5password';
GRANT INSERT ON stu.sc TO 'u5'@ 'localhost' WITH GRANT OPTION;

CREATE USER 'u6'@ 'localhost' IDENTIFIED by 'u6password';
GRANT INSERT ON stu.sc TO 'u6'@ 'localhost' WITH GRANT OPTION;

CREATE USER 'u7'@ 'localhost' IDENTIFIED by 'u7password';
GRANT INSERT ON stu.sc TO 'u7'@ 'localhost';

REVOKE UPDATE(Sno) ON stu.student FROM 'u4'@ 'localhost';
REVOKE INSERT ON stu.sc FROM 'u5'@ 'localhost';

CREATE ROLE 'R1'@ 'localhost';
SET DEFAULT ROLE ALL TO 'root'@ 'localhost';
GRANT SELECT, UPDATE, INSERT ON TABLE Student TO 'R1'@ 'localhost';
GRANT 'R1'@ 'localhost' TO 'u1'@ 'localhost';
GRANT DELETE ON TABLE Student TO 'R1'@ 'localhost';

  • 0
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
一、实验目的 使学生加深对数据库安全性和完整性的理解。并掌握SQL Server中有关用户、角色及操作权限的管理方法。熟悉通过SQL语句对数据进行完整性控制。 二、实验内容和要求   数据库安全性实验,在SQL Server企业管理器中,设置SQL Server的安全认证模式,实现对SQL Server的用户和角色管理,设置和管理数据操作权限。   具体内容如下:   设置SQL Server的安全认证模式(Windows或SQL Server和Windows(S)认证模式)。   登录的管理 创建一个登录用户   数据库用户的管理 登陆用户只有成为数据库用户(Database User)后才能访问数据库。每个数据库用户信息都存放在系统Sysusers中,通过查看Sysusers可以看到该数据库所有用户的情况。SQL Server的数据库中都有两个默认用户:dbo(数据库拥有者用户)和(dba)。通过系统存储过程或企业管理器可以创建新的数据库用户。   角色的管理 创建一个角色,使创建的用户成为该角色的成员,并授予一定的操作权限。   在学生中定义主键、外键约束。   在课程的“课程名”字段上定义唯一约束。   在选课的“成绩”字段上定义check约束,使之必须大于等于0且小于等于100.“课程号”字段只能输入数字字符。   定义规则,并绑定到读者的“性别”字段,使之只能取“男、女”值。   在学生中增加出生日期字段。定义缺省,并绑定到借阅的“借阅日期”上,使之只能取当前日期。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值