MySQL数据库安全性控制
基于学校数据库课程对应的实验内容实现
本文有如下内容:
前言
请确保您的数据库以及相关表已经创建
本文基于如下表结构进行相关操作:
>
基于Navicat工具进行相关操作
一、创建数据库角色与用户
- 创建角色
- 创建用户
- 为用户添加角色
1.创建角色
-- 语法
-- CREATE ROLE '角色名'@'域名(本地一般为localhost)';
CREATE ROLE 'DBManager'@'localhost';
-- 运行下面的语句查询角色是否创建成功
-- SELECT HOST,User FROM mysql.user;
2.创建用户
-- 语法
-- CREATE USER '用户名'@'域名(本地一般为localhost)' IDENTIFIED BY '登录密码';
CREATE USER 'Candy'@'localhost' IDENTIFIED BY '123456';
-- 运行下面的语句查询角色是否创建成功
-- SELECT HOST,User FROM mysql.user;
3.为用户添加角色
-- 语法
-- GRANT '角色名'@'域名(本地一般为localhost)' TO '用户名'@'域名(本地一般为localhost)';
-- SET DEFAULT ROLE '角色名'@'域名(本地一般为localhost)' TO '用户名'@'域名(本地一般为localhost)';
GRANT 'DBManager'@'localhost' TO 'Candy'@'localhost';
SET DEFAULT ROLE 'DBManager'@'localhost' TO 'Candy'@'localhost';
二、为角色授权
- 为某角色授予创建视图权限
- 为某角色授予修改和删除某张表中数据的权限
- 为某类角色授予之只能查询某张表中的部分字段的权限
- 撤销某角色的权限
1.为某角色授予创建视图权限
-- 语法
-- GRANT CREATE VIEW ON 基本表/视图 TO '角色名'@'域名(本地一般为localhost)';
-- 为何要加SELECT权限?笔者推测在创建视图时会涉及到条件筛选以及投影操作,因此要加SELECT权限.
GRANT CREATE VIEW,SELECT ON book.* TO 'DBManager'@'localhost';
登录验证并创建视图:
2.为某角色授予修改和删除某张表中数据的权限
-- 语法
-- 同上
GRANT UPDATE,DELETE ON book.* TO 'DBManager'@'localhost';
登录验证并尝试修改和删除某张表中的数据:
嘿嘿,删除出现错误,语法记混了略略略~
3.为某类角色授予之只能查询某张表中的部分字段的权限
-- 语法
-- GRANT SELECT(基本表字段用逗号分隔) ON 基本表 TO '角色名'@'域名(本地一般为localhost)';
GRANT SELECT(BName,BPrice) ON book.book TO 'DBManager'@'localhost';
登录数据库验证并查询:
PS:在此之前应当撤销下之前给DBManage角色的权限
-- 语法
-- REVOKE 权限,... ON 数据库对象 FROM '角色名'@'域名(本地一般为localhost)';
REVOKE SELECT ON book.* FROM 'DBManager'@'localhost';
4.撤销某角色的权限
-- 此处撤销之前赋予DBManager角色的DELETE权限
-- 语法
-- REVOKE 权限,... ON 数据库对象 FROM '角色名'@'域名(本地一般为localhost)';
REVOKE DELETE ON book.* FROM 'DBManager'@'localhost';
登录验证并尝试删除数据:
可以看到操作被拒绝。
三、数据库备份与还原
- 备份
- 还原
1.备份
利用Navicat工具十分方便:
2.还原
OK,至此安全性部分实验到这里结束了,有什么问题欢迎在评论区提出或私信博主一起讨论~
鸡汤:这个世界要是这么简单就好了😂