【MySQL 8.0】使用role角色功能对用户进行权限设置

TangLu MySQL 2024-03-19 3563 0

一、MySQL角色的作用

角色(role)是 MySQL8.0 引入的新功能,角色的作用就相当于一个用户组,在同一个组内的用户有同样的权限,这样做的目的是方便对拥有相同权限的用户进行统一管理,也省去了对每个用户单独授权的繁琐过程。


二、MySQL角色的管理

1、创建角色(和创建用户类似,只是关键词替换为了ROLE)

CREATE ROLE 'manager'@'%';
CREATE ROLE 'user'@'%';


2、为角色赋权(和用户授权的方式一样)

#这里让角色manager拥有了demo_80这个库的所有权限
GRANT ALL PRIVILEGES ON demo_80.* TO 'manager'@'%';
GRANT SELECT,INSERT,DELETE,UPDATE ON demo_80.* TO 'user'@'%';


3、查看角色的权限(和查看用户权限一样)

SHOW GRANTS FOR 'manager'@'%';


4、回收角色权限

REVOKE DELETE ON demo_80.* FROM  'user'@'%';
SHOW GRANTS FOR 'user'@'%';


5、删除角色

drop role 'user'@'%';


三、给用户赋予角色

1、创建用户

CREATE USER 'tanglu'@'%' IDENTIFIED BY '123456';


2、修改该用户的角色。实际就是让角色成为了权限的集合别名

GRANT 'manager'@'%' TO 'tanglu'@'%'


3、用户加入角色后默认是没有激活的,查看当前角色依然是NONE

SELECT CURRENT_ROLE();


4、激活角色

#方法1——SET DEFAULT ROLE语句
SET DEFAULT ROLE 'manager'@'%' TO 'tanglu'@'%';


#方法2——开启activate_all_roles_on_login,对所有角色永久激活
set global activate_all_roles_on_login=on;


5、再次查看用户当前角色验证

SELECT CURRENT_ROLE();  #重新登录被赋权的用户进行角色查看


6、撤销用户角色

revoke 'manager'@'%' from 'tanglu'@'%';


评论