文章目录
- 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@';#系统重启后仍然有效
set global mandatory_roles = 'role1,role2@localhost,r3@';#系统重启后失效