sql自学笔记(十三)——MySQL8.0版本的新特性(三)

2019-05-01  本文已影响0人  itczt

角色管理

MySQL提供了角色管理的新功能,角色是一组权限的集合。


以前的版本
现在的版本

实现步骤

1.创建一个测试的数据库
create database thestdb;
2.创建一个表
create table testdb.tl(id int);
3.创建一个角色
create role 'write _ role';

4.先测试一下,查询用户表

select host,user,authentication _ string from myaql.user;

5.授予权限

grant select on testdb.* to 'write _ role';

把角色给予用户

1.创建一个用户

create user 'user1' identified by 'user1@2019';

2.把角色授予这个用户

grant 'write _ role' to 'user1';

3.显示这个用户的权限

show grants for 'user1';

4.查看用户通过角色获得了那些权限

show grabts for 'user1' using 'write _ role';

查看这个用户获得这些权限后的一个行为

使用新建的用户进行登录



先显示一下用户

select user();

尝试一下使用它的权限

查询开始时创建的t1表

select * from testdb.tl;

这时它显示了错误,不能访问这张表。
因此,显示当前用户激活的角色

select current _ role();

上图就是我们不能访问的原因
设置启动当前用户的角色'write _ role';

set role 'write _ role';

再来查询一下:

select current _ role();

这时有了这个权限之后再来查询一下;

select * from testdb.tl;

如图所示,虽然没用数据但是可以访问这张表的。


为每个用户设置默认的角色

set default role 'write _ role' to ‘user';

这时启用‘user’用户时,就会默认有‘write _role’这个角色
如果有多个用户都默认启用角色

set default role all to 'user1';

查看角色相关的系统数据

select  * from mysql.default _ roles;


角色所涉及到的角色信息

select * from mysql.role _ edges;

授予权限之后还可以撤销相应角色当中的权限
把角色的权限收回

revoke insert,update,dalete on testdb * from 'write _ role';

下面在查看相应用户上它的权限

show grants for user1 using 'write _ role';

由于角色对应的权限被收回,所以用户所对应的权限也没有了。

上一篇下一篇

猜你喜欢

热点阅读