1.角色的理解
角色是mysql8.0引入的新功能,在mysql中,角色是权限的集合,可以为角色添加或移除权限。引入角色的目的是方便管理拥有相同权限的用户。恰当的权限设定,可以确保数据的安全性,这是至关重要的。
2.创建角色
CREATE ROLE 'role_name' [@'host_name'][,'role_name'[@'host_name']]...
如果host_name省略,默认为%,role_name不可省略,不可为空
create role 'manager'@'%';
3.给角色赋予权限
GRANT privileges ON table_name TO 'role_name'[@'host_name'];
show privileges\G;
GRANT all privileges on *.* to 'boss';
create role 'school_admin','school_read','school_write';
grant all privileges on test.* to 'school_admin';
grant select on test.* to 'school_read';
grant insert,update,delete on test.* to 'school_write'
4.查看角色的权限
show grants for 'manager'
5.回收角色的权限
REVOKE privileges ON tablename from 'rolename';
revoke insert,update,delete on school.* from 'school_write';
show grants for 'school_write'
6.删除角色
DROP ROLE role[,role2]
7.给用户赋予角色
角色创建并授权后,要赋给用户并处于激活状态才能发挥作用。
mysql中创建了角色之后,默认都是没有被激活,必须要手动激活。
GRANT role[,role,...] TO user[,user2...];
GRANT 'school_read' TO 'li4'@'localhost;'
8.激活角色
方式1:使用set default role命令激活角色
SET DEFAULT ROLE ALL TO 'li4'@'localhost'
方式2:将active_all_roles_on_login设置为ON
SET GLOBAL active_all_roles_on_login=ON;
9.撤销用户角色
REVOKE role FROM user;
REVOKE 'school_read' FROM 'kangshifu'@'localhost';
10.设置强制角色
强制角色是给每个创建账户的默认角色,不需要手动设置,强制角色无法被REVOKE或者DROP
方式1:服务启动前设置
[mysqld]
mandatory_roles='role1,role2@localhost'
方式2:运行时设置
SET PERSIST manadatory_roles = 'role1,role2@localhost' #系统重启后仍然有效
SET GLOBAL manadatory_roles = 'role1,role2@localhost';系统重启后失效
