文章目录

  • 1 角色的概念
  • 2 角色与权限的管理
  • 2.1 创建角色
  • 2.2 给角色赋予权限
  • 2.3 查看角色权限
  • 2.4 回收角色的权限
  • 2.5 删除角色
  • 3 角色与用户的管理
  • 3.1 给用户授予角色
  • 3.2 撤销用户的角色
  • 3.3 设置强制角色


1 角色的概念

角色是在MySQL8.0中引入的新功能。在MySQL中,角色是权限的集合,可以为角色添加或移除权限。用户可以被赋予角色,同时也被授予角色包含的权限。对角色进行操作需要较高的权限。并且像用户账户一样,角色可以拥有授予和撤消的权限。
引入角色的目的是方便管理拥有相同权限的用户恰当的权限设定,可以确保数据的安全性,这是至关重要的

2 角色与权限的管理

2.1 创建角色

create role 'role_name'[@'host_name'];

2.2 给角色赋予权限

grant privileges on table_name to 'role_name'[@'host_name']

2.3 查看角色权限

show grants for 'role_name'[@'host_name'];

2.4 回收角色的权限

revoke privileges on table_name from 'role_name';
#例
revoke insert,update,delete on school.* from 'school_write';

2.5 删除角色

drop role 'role_name';

3 角色与用户的管理

3.1 给用户授予角色

grant 'role_name'[@ 'host_name'] to 'user_name'[@ 'host_name']
#授予权限后需要激活才生效
set default 'role_name'[@ 'host_name'] all to 'user_name'[@ 'host_name'];
#或者设置默认系统参数
show variables like 'activate_all_roles_on_login';#查看
set global activate_all_roles_on_login = ON;#设置状态为开启

3.2 撤销用户的角色

revoke 'role_name'[@ 'host_name'] from 'user_name'[@ 'host_name']

3.3 设置强制角色

强制角色是给每个创建账户的默认角色,不需要手动设置。强制角色无法被REVOKE或者DROP

#方式一:服务器启动前设置
mandatory_role='role1,role2@localhost,r3@%'
#方式二:运行时设置
set persist mandatory_roles='role1,role2@localhost,r3@exanple.com';#系统重启后仍然有效
set global mandatory_roles = 'role1,role2@localhost,r3@exanple.com';#系统重启后失效