角色管理
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';
由于角色对应的权限被收回,所以用户所对应的权限也没有了。
网友评论