当前课程知识点:MySQL数据库案例教程 >  第7章 用户与权限 >  7.2 权限管理 >  7.2 权限管理 视频

返回《MySQL数据库案例教程》慕课在线视频课程列表

7.2 权限管理 视频在线视频

下一节:7.2 权限管理 课件

返回《MySQL数据库案例教程》慕课在线视频列表

7.2 权限管理 视频课程教案、知识点、字幕

同学们好

欢迎来到MySQL数据库案例教程

今天我们学习第7章用户与权限

本次课的学习内容是

权限管理

主要从权限管理概述

用户权限管理和用户角色管理

三个方面进行讲解

大家都知道

数据库有个典型的特点就是数据共享

比如银行存储的数据

客户档案信息等

那么这些数据

可以无条件共享和增删改查吗

显然是不可以的

为了数据的安全

MySQL对数据库

进行了一些系列的权限管理

首先来看权限管理概述

MySQL服务器通过权限表来控制用户

对数据库的访问

权限表存放在mysql数据库中

由mysql_install_db脚本初始化

其中user表是最重要的一个权限表

它记录了允许连接到服务器的账号信息

里面的权限是全局性的

数据库作用范围权限

主要可以分为以下6大类

全局权限

全局权限是作用在

提供mysql服务的实例下的所有数据库

记录在mysql数据库的user数据表中

接下来还有数据库权限

表权限 列权限

分别记录在mysql数据库的不同数据表中

最后还有存储过程权限

分别作用在存储过程和函数中

代理用户权限

是一个用户成为另一个用户的代理

下面我们来学习用户权限管理

首先是查看权限

语法比较简单

需要注意的是如果查看的

是当前用户的权限

可直接使用show grants

后面的for和用户名省略不写

切换到SQLyog中进行案例1的演示

当前登录的用户是root

所以

查询root用户权限可以直接用show grants

执行SQL语句

在结果中可以看见root用户的权限

包含了所有权限

表明这个是超级用户

接着查询普通用户zhangs的权限

zhangs的权限都是usage

表明当前zhangs无任何权限

二、权限授予

使用GRANT进行授权

在语法中权限列表可以是all

表示所有权限

也可以是select update等权限

当有多个权限时

关键字之间用逗号分开

dbname表示数据库名

tablename指定表名

identified by用于指定用户的登录密码

可以省略不写

最后的with grant option

表示该用户

可以将自己拥有的权限授权给别人

这里需要告诉大家

MySQL数据库有一个很重要的特点

就是权限传递

如果在用户授权的时候

没有加with grant option参数

则权限不能传递

该用户在为其他用户授权时就会提示错误

注意

用户权限的授予可以叠加

比如先给一个用户添加一个select权限

然后又给用户添加一个insert权限

那么该用户就同时拥有select和insert权限

权限控制主要是出于安全因素

因此需要遵循一下几个经验原则

1.只授予能满足需要的最小权限

防止用户误操作改变数据信息

比如用户只是需要查询

那就只给select权限就可以了

不要给用户赋予其他的权限

2.创建用户的时候限制用户的登录主机

在实际开发中一般是限制成指定IP

或者内网IP段

3.初始化数据库的时候

删除没有密码的用户

安装完数据库的时候会自动创建一些用户

这些用户默认没有密码

4.为每个用户设置满足密码复杂度的密码

5.定期清理不需要的用户

可以回收权限或者删除用户

下面通过案例2对用户授权进行实践操作

案例2要求对用户zhangs进行三次授权

并且每次授权之后都要查看一下权限

切换到SQLYog

当前用户zhangs没有任何权限

先授权select

这里*.*指所有数据库

用SHOW GRANTS语句查看结果

此时zhangs的select权限授权成功

继续授权insert

执行查看权限语句

或者通过select语句查询user数据表

我们发现zhangs的select权限字段值

和insert权限字段值都变成Y了

其他权限字段依旧是N

最后进行所有权限授权

执行查看权限语句

此时lis已经具备了超级用户的所有权限了

在MySQL中

为了保证数据库的安全性

需要将用户不必要的权限收回

为了实现这种功能

MySQL提供了

REVOKE语句用来撤销用户的权限

revoke命令语法跟grant命令差不多

只需把关键字to换成from即可

并且不需要设置密码

REVOKE可以收回所有权限

也可以收回部分权限

当收回所有权限时

权限列表用关键词ALL

当收回部分权限时

多个权限名用逗号隔开

下面我们来对案例3进行测试

打开SQLYog窗口

输入REVOKE语句

为了便于直观查看

使用SELECT语句

查询用户zhangs的相关权限字段值

从user表中可以看出

select和insert权限值已经变成N

撤销成功

接下来我们一起学习本次课的第三部分内容

用户角色管理

MySQL8.0新增了角色的概念

使账号权限的管理更加灵活方便

所谓角色就是一些权限的集合

可以为一组具有相同权限的用户创建一个角色

我们在实际开发中授权权限往往是某一批账户

因为账号会绑定IP

不同的IP 虽然账号名相同

但是被视为不同账号

当我们需要对这些账号减少或增加权限时

只需要修改权限集合即可

不用单个账号多次修改

从而大大提高了开发的效率

我们可以将某个角色赋予某个用户

然后这个用户就拥有了这个角色下的所有权限

这种方法使得我们可以定义

不同的角色来分配给不同的用户

例如我们可以定义"开发者角色"

"只读角色","读写角色"等等

不同的角色对应不同的权限

这样对于开发人员

我们只需要将"开发者角色"

授予他们的个人账号即可

对于某些查询用户

只需要授予"只读角色"

对于业务账号

要授予数据库的"读写角色"

为了对角色管理加深理解

我们从以下几个步骤来学习

一是创建角色

用CREATE ROLE语句创建

角色的命名和用户是一样的

由双主键来决定

二是对创建的角色授权

从语法上可以看出

对角色的授权于对用户授权的语句一样

三是将角色授权于用户

与上一个语法不同的地方

在于没有关键字ON了

四是查看用户角色权限

将角色授权给用户后

如果要查看该用户的角色权限

需要在SHOW GRANTS后面

加上USING角色名

五是激活用户角色

这条语句在用户角色管理中常常容易被忽略

导致用户登录数据库后权限无效

激活用户角色有两种方法

可以用SET语句手动激活

在MySQL8.0中还提供了一个参数

用来自动激活用户角色

六是从用户中撤销角色

这个语法跟撤销用户权限一样

都是使用REVOKE语句

最后是删除角色

删除角色

会从授权它的每个用户中撤销该角色

以上是对用户角色管理的简单介绍

接下来通过一个案例对角色管理进行实践

本案例以使用数据库stu为例

打开SQLYog

首先创建用户和角色

创建完成后

可以用select语句查看一下user数据表

我们发现user表中不仅有普通用户user1

还有role_rw也作为用户名出现了

然后对角色进行授权

将这4个权限授权后

再将角色role_rw授权给用户user1

查看用户角色权限

注意这时如果只是SHOW GRANTS语句

查到的结果只有角色role_rw

并且没有显示角色中的权限

所以我们要在后面加上关键字USING

这样就可以看到结果中有select

insert、update和delete四个权限了

第五步激活角色

从上一步来看

用户user1

已经对数据库stu具有查询功能了

现在让用户user1登录MySQL服务器

发现并没有数据库stu

其中的原因就是用户的角色没有激活

现在使用SET语句手动激活角色

然后再次让用户user1登录MySQL

此时发现数据库stu出现了

说明激活成功

所以在给用户授权角色之后

一定不要忘了激活

否则角色中的权限无效

接着看第6步

撤销用户的角色

执行撤销语句

然后用查看用户user1的权限

注意这时不能在查看语句后面

用USING关键字了

因为角色已经不存在了

从查询结果中可以看出

user1变成了无权限

最后删除角色role_rw

执行DROP语句

然后查询user表发现

用户字段中不再有角色role_rw

说明删除成功

现在请大家思考一个问题

在案例4中新建的用户和角色

都添加在mysql数据库的user表中

并且都在同一列中出现

那么当一个角色只授权给一个用户时

这个用户是不是可以当做角色

再授权给其他用户呢?

最后我们来总结一下本节课所学内容

本节课主要介绍了用户权限的分类

用户权限的查看、授予和撤销

以及角色管理

在MySQL8.0相对于以前的版本

有了很大变化

角色管理就是一个新增知识

同学们需要不断学习和测试

对新知识要有强烈的求知探索精神

才能更好的运维MySQL数据库

本次课就讲到这里

谢谢

再见

MySQL数据库案例教程课程列表:

第1章 数据库基础知识

-1.1 数据库基础知识

--1.1 数据库基础知识视频

--1-1数据库基础知识课件

-1.2 MySQL的安装与运行

--1-2MySQL安装与运行视频

--1-2MySQL安装与运行课件

--1-2MySQL安装与运行实训

-第1章 测试

第2章 数据库和表的基本操作

-2.1 数据库的基本操作

--2-1数据库的基本操作视频

--2-1数据库的基本操作课件

--2-1数据库的基本操作实训

-2.2 表的基本操作

--2-2表的基本操作视频

--2-2表的基本操作课件

--2-2表的基本操作实训

-2.3 MySQL数据类型

--2-3MySQL数据类型视频

--2-3MySQL数据类型课件

--2-3MySQL数据类型实训

-2.4 约束设置

--2-4约束设置视频

--2-4约束设置课件

--2-4约束设置实训

-2.5 索引

--2-5索引视频

--2-5索引课件

--2-5索引实训

-第2章测试

第3章 记录操作

-3.1 插入记录

--3-1 插入记录视频

--3-1插入记录课件

--3-1插入记录实训

-3.2 修改记录

--3-2修改记录视频

--3-2修改记录实训

--3-2修改记录课件

-3.3 删除记录

--3.3删除记录

--3-3删除记录实训

--3-3删除记录课件

-第3章 测试

第4章 查询与视图

-4.1 select语句

--4.1select 语句视频

--4-1select语句课件

--4-1select语句实训

-4.2 单表查询

--4-2-1select子句

--4-2-2where子句

--4-2-3group子句

--4-2单表查询实训

-4.3 多表查询

--4-3多表查询视频

--4-3多表查询课件

--4-3多表查询实训

-4.4 子查询

--4-4子查询视频1

--4-4子查询视频2

--4-4子查询课件

--4-4子查询实训

-4.5 外键

--4-5外键视频

--4-5外键课件

--4-5外键实训

-4.6 视图

--4-6视图视频1

--4-6视图视频2

--4-6视图课件

--4-6视图实训

-第4章测试

第5章 高级操作

-5.1 函数

--5-1自定义函数视频

--5-1系统函数

--5-1函数课件

--5-1 函数实训

-5.2 流程控制语句

--5-2流程控制语句视频

--5-2流程控制课件

--5-2流程控制实训

-5.3 事务与游标

--5-3事务与游标视频

--5-3事务与游标课件

--5.3事务与游标实训

-5.4 存储过程

--5-4存储过程视频

--5-4存储过程课件

--5-4存储过程实训

-5.5 触发器

--5-5触发器视频

--5-5触发器课件

--5-5触发器实训

-第5章测试

第6章 备份与还原

-6.1 数据库备份与还原

--6-1数据库备份与还原 视频

--6-1数据库备份与还原 课件

--6-1数据库备份与还原 实训

-6.2 异构数据源导入导出

--6-2异构数据源导入导出 视频

--6-2异构数据源导入导出 课件

--6-2异构数据源导入导出 实训

-第6章测试

第7章 用户与权限

-7.1 用户管理

--7-1用户管理 视频

--7-1用户管理 课件

--7-1用户管理 实训

-7.2 权限管理

--7.2 权限管理 视频

--7.2 权限管理 课件

--7.2 权限管理 实训

-7.3 应用实例开发

--7-3应用实例开发 视频

--7-3应用实例开发 课件

--7-3应用实例开发 实训

-第7章测试

7.2 权限管理 视频笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。