一、引言
学习完上篇博客,我们创建了用户之后,发现用户可以登录上 mysql 但是基本上不能访问任何的数据库,只能访问一个系统库。原因就是:用户创建好了之后,并没有给用户分配权限。接下来就会去学习和讲解DCL当中如何控制权限。
(1)MySQL 当中定义了很多种权限,但是常用的就以下的几种权限:
其它的权限大家可以去官方文档查看详细的说明。
二、DCL——权限控制
主要通过介绍一下三张操作。
1、查询权限
SHOW GRANTS FOR '用户名'@'主机名';
注意:
grant:授予、准许
2、授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
注意:
1、如果我们要给所有的数据库、所有的表来赋予权限。就写 ' *.* '
3、撤销权限
- REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
注意:
revoke:撤销、废除。记住 ON 后面注意你要撤销的是哪一个数据库、哪一张表上的权限,然后从每一个用户的权限上面来撤销这个权限。后面加个关键字:FROM。
三、案例
打开工具 DataGrip ,然后打开控制台。
(1)查询权限
FOR 后面指定的是你要查询的是哪一个用户的权限,比如我现在查询 heima 用户。
SHOW GRANTS FOR 'heima'@'%';
(2)授予权限
GRANT ALL ON test.* TO 'heima'@'%';
执行查询权限
这个时候再去命令行检查一下。
(3)撤销查询
REVOKE ALL ON test.* FROM 'heima'@'%';
此时,打开命令行退出之前的操作。重新用用户 heima 登录连接数据库查看。
这就是DCL关于权限控制的三种操作。
注意:
1、多个权限之间,使用逗号分隔。
2、授权时,数据库名和表名可以使用*进行通配,代表所有。例如:*.* :代表我们要给这个用户分配 所有数据库所有表的所有权限,这就类似于是一个超级管理员。