数据库的安全管理
一、实验目的
- 掌握用户账号的创建、查看、修改、删除的方法。
- 掌握用户权限设置方法。
- 掌握角色的创建、删除方法。
二、实验内容 - 用户账号的创建、查看、修改、删除的SQL语句。
- 用户权限设置SQL语句。
- 角色的创建、删除SQL语句。
三、实验步骤 - 在本地主机创建用户账号st_01,密码为123456。
CREATE user st_01@localhost IDENTIFIED by ‘123456’;
2.查看MySQL下所有用户账号列表。
USE mysql;
SELECT * FROM user;
3.修改用户账号st_01的密码为111111。
SET PASSWORD FOR st_01@localhost=‘111111’;
4. 使用studentsdb数据库中的student_info表。
(1)授予用户账号st_01查询表的权限。
GRANT SELECT ON TABLE studentsdb.student_info
TO st_01@localhost ;
(2)授予用户账号st_01更新家庭住址列的权限。
GRANT UPDATE(家族住址) ON TABLE student.student_info
TO st_01@localhost;
(3)授予用户账号st_01修改表结构的权限。
GRANT ALTER ON student.student_info
TO st_01@localhost;
5. 使用studentsdb数据库中的student_info表。
(1)创建存储过程cn_proc,统计student_info表中的学生人数。
DELIMITER @@
CREATE PROCEDURE cn_proc()
BEGIN
SELECT COUNT(*) FROM student_info;
END@@
DELIMITER;
(2)授予用户账号st_01调用cn_proc存储过程的权限。
GRANT EXECUTE ON PROCEDURE STUDENTDB.CN_PROC
TO st_01@localhost;
(3)以用户账号st_01连接MySQL服务器,调用cn_proc存储过程查看学生人数。
CALL CN_PROC();
- 使用studentsdb数据库。
(1)授予用户账号st_01在studentsdb数据库上创建表、删除表、查询数据、插入数据的权限。
(2)以用户账号st_01连接MySQL服务器,创建新表st_copy,与表student_info完全相同。
(3)以用户账号st_01连接MySQL服务器,删除表st_copy。
GRANT CREATE,DROP,SELECT,INSERT ON studentdb
TO st_01@localhost;
DROP TABLE st_copy;
7.撤消用户账号st_01在studentsdb数据库上创建表、删除表、查询数据、插入数据的权限。
REVOKE CREATE,DROP,SELECT,INSERT ON studentdb.student_info
FROM st_01;
8.撤消用户账号st_01所有权限.
REVOKE ALL PRIVILEGES,GRANT OPTION
FROM st_01@localhost; - 使用studentsdb数据库中的student_info表。
(1)创建本地机角色student。(MySQL 8.0版本可做)
(2)授予角色student查询student_info表的权限。(MySQL 8.0版本可做)
(3)创建本地机用户账号st_02,密码为123。
(4)授予用户账号st_02角色student的权限。
(5)以用户账号st_02连接MySQL服务器,查看student_info表信息。
(6)撤消用户账号st_02角色student的权限。
(7)删除角色student。(MySQL 8.0版本可做)
use mysql;
CREATE ROLE ‘student’@‘localhost’;
(2)
grant select on studentdb.student_info
to ‘student’@‘localhost’;
(3)
create user st_02@localhost identied by ‘123’;
(4)
grant ‘student’@‘localhost’ to st_02@localhost;
(5)
select * from studentdb.student_info;
(6)
revoke all privileges,grant option
from ‘student’@‘localhost’;
(7)
drop role ‘student’@‘localhost’;
9.删除用户账号st_01、st_02。
DROP user st_01@localhost,st_02@localhost;
四、实验思考
- 用户账号、角色和权限之间的关系是什么?没有角色能给用户授予权限吗?
给用户赋予角色,给角色赋予权限。没有角色不能给用户授予权限。 - 角色在用户账号连接服务器后自动被激活的设置方法。
set global activate_all_roles_on_login=ON;
4.with grant option选项的作用是什么?
WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。
五、实验总结
1、收获
通过这次实验,掌握了用户创建和授权方法,理解了数据库安全性的内容,学会了创建登录用户并向其授予数据库访问权限。
2、存在的问题
刚开始时没有分清登录账号和用户账号之间的差别。