mysql-11 数据库安全性以及权限操作

mysql-11 数据库安全性以及权限操作

概念

1)安全性:保护数据库以防止不合法使用所造成的数据泄露、更改或破坏;

2)完整性:指数据的正确性和相容性,即防止数据库中存在不符合语义(或不正确)的数据;

关系数据库系统中的存取权限

对象类型 对象 操作类型
数据库模式 模式 create,schema
数据库模式 基本表 create table,alter table
数据库模式 视图 create view
数据库模式 索引 create index
数据 基本表和视图 select,insert,update,delete,references,all privileges
数据 属性列 select,insert,update,references,all privileges

相关语法举例

1、授权(grant)

1
2
3
4
5
6
7
8
9
10
#将对student和course表的全部操作权限授予用户u2和u3,并且允许将此权限再授予其他用户
grant all privileges
on table student,course
to u2,u3
with grant option;

#将查询student表和修改学生学号的权限授予所有用户
grant select,update(sno)
on table student
to public;

2、收回权限(revoke)

1
2
3
4
5
6
7
8
9
#收回所有用户对student表的查询权限
revoke select
on table student
from public;

#收回用户u5对sc表的insert权限,同时级联收回用户u5赋予其他用户的对应权限,以及其他用户又赋予其他用户的对应权限(就是级联的意思)
revoke insert
on table sc
from u5 cascade;

数据库角色

  数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。常用做法是为一组具有相同权限的用户创建一个角色,以此简化授权的过程。

1、通过角色实现将一组权限授权给用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#创建角色r1
create role r1;

#使用grant语句,使角色r1拥有student表的select、update、insert权限
grant select,update,insert
on table student
to r1;

#将这个角色授予wang、zhao,使他俩具有角色r1所包含的全部权限
grant r1
to wang,zhao;

#一次性回收wang对student表的select、update、insert权限
revoke r1
from wang;

#修改角色权限(在原基础上新增delete权限)
grant delete
on table student
to r1;

视图机制

  除了角色,还可以给不同的用户定义不同的视图,将数据对象限制在一定范围内,为数据提供一定程度的安全保护(不同用户视图不同,例如学生A不能看到学生B的成绩)。

举例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#建立计算机系学生的视图,把对该视图的select权限授予wang(老师),将该视图的所有权限授予zhang(系主任)
create view cs_student
as
select *
from student
where sdept='cs';

grant select
on cs_student
to wang;

grant all privileges
on cs_student
to zhang;
欢迎打赏,谢谢
------ 本文结束------
0%