用MySQL Workbench 完成,写出具体过程和代码
时间: 2024-12-20 20:13:46 浏览: 13
### 使用 MySQL Workbench 完成数据库安全管理实验的具体过程和代码
#### 一、实验目的
1. 掌握 MySQL 数据库的自主存取控制机制。
2. 掌握创建用户、修改密码、删除用户等用户管理功能。
3. 掌握对用户授予或收回权限的权限管理功能。
4. 掌握利用数据库角色简化授权管理操作的方法。
#### 二、实验平台
- **硬件配置**:
- 处理器:Intel(R) Core(TM)i5-13500HX 2.5GHz
- 内存:16.0GB
- **软件配置**:
- 操作系统:Windows 11
- 数据库:MySQL 8.0 及 MySQL Workbench
#### 三、实验内容
##### 1. 创建登录用户
1. **创建用户**:
```sql
USE linyufei; -- 将数据库名换成自己的姓名拼音
CREATE USER 'huangxiaoming'@'localhost' IDENTIFIED BY '123456';
```
2. **验证用户**:
- 在 MySQL Workbench 中,选择 "Database" -> "Connect to Database"。
- 在 "Connect to Database" 窗口中,输入 "Stored Connection" 和 "Username" 为 "huangxiaoming",点击 "OK"。
- 在 "Connect to MySQL Server" 窗口中,输入黄晓明的登录密码,点击 "OK"。
##### 2. 修改用户密码
```sql
SET PASSWORD FOR 'huangxiaoming'@'localhost' = 'newpassword';
```
##### 3. 检验用户查询权限
```sql
SELECT * FROM student;
```
- 分析:黄晓明用户默认没有查询权限,因此会报错。
##### 4. 授予用户查询权限
```sql
GRANT SELECT ON linyufei.student TO 'huangxiaoming'@'localhost';
```
##### 5. 再次检验用户查询权限
```sql
SELECT * FROM student;
```
- 分析:此时黄晓明用户应该能够成功查询 `student` 表。
##### 6. 检验用户插入权限
```sql
INSERT INTO student (Sno, Sname, Ssex, Sbirthdate, Smajor)
VALUES ('20180033', '王宁', '男', '2000-5-28', '信息安全');
```
- 分析:黄晓明用户默认没有插入权限,因此会报错。
##### 7. 授予用户插入和删除权限
```sql
GRANT INSERT, DELETE ON linyufei.student TO 'huangxiaoming'@'localhost' WITH GRANT OPTION;
```
##### 8. 再次检验用户插入权限
```sql
INSERT INTO student (Sno, Sname, Ssex, Sbirthdate, Smajor)
VALUES ('20180033', '王宁', '男', '2000-5-28', '信息安全');
```
- 分析:此时黄晓明用户应该能够成功插入数据。
##### 9. 利用视图和授权实现安全控制
1. **创建视图**:
```sql
CREATE VIEW csView AS
SELECT s.Sno, s.Sname, c.Cno, c.Cname, sc.Grade, sc.Term
FROM student s
JOIN sc ON s.Sno = sc.Sno
JOIN course c ON sc.Cno = c.Cno
WHERE s.Smajor = '计算机科学与技术';
```
2. **授予视图查询权限**:
```sql
GRANT SELECT ON linyufei.csView TO 'huangxiaoming'@'localhost';
```
##### 10. 检验视图查询权限
```sql
SELECT * FROM sc;
SELECT * FROM csView;
```
- 分析:黄晓明用户能够查询 `csView`,但不能查询 `sc` 表。
##### 11. 收回用户删除权限
```sql
REVOKE DELETE ON linyufei.student FROM 'huangxiaoming'@'localhost';
```
##### 12. 创建角色并授予权限
1. **创建角色**:
```sql
CREATE ROLE CourseAdmin;
```
2. **授予角色权限**:
```sql
GRANT SELECT, INSERT, DELETE, UPDATE ON linyufei.course TO CourseAdmin;
```
##### 13. 测试角色权限
```sql
SELECT * FROM course;
```
- 分析:黄晓明用户没有 `CourseAdmin` 角色,因此无法查询 `course` 表。
##### 14. 授予角色给用户
```sql
GRANT CourseAdmin TO 'huangxiaoming'@'localhost';
```
##### 15. 再次测试角色权限
```sql
SELECT * FROM course;
```
- 分析:此时黄晓明用户应该能够成功查询 `course` 表。
#### 四、实验总结
1. **做什么**:
- 创建和管理数据库用户。
- 授予和收回用户权限。
- 利用视图和角色简化权限管理。
2. **用什么技术**:
- MySQL 数据库。
- MySQL Workbench。
3. **怎么做**:
- 使用 SQL 语句创建用户、修改密码、授予和收回权限。
- 利用视图和角色实现细粒度的权限控制。
4. **做成怎么样**:
- 成功创建了用户并管理了其权限。
- 利用视图和角色实现了安全控制。
5. **学到了什么**:
- 掌握了 MySQL 的用户管理和权限控制机制。
- 了解了视图和角色在权限管理中的应用。
阅读全文