持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
前言
上篇我们学习了MySQL中的角色管理。有兴趣的小伙伴可以阅读(# MySQL学习-角色管理(一))。
下面我们继续学习MySQL中的角色管理。
角色管理
给用户赋予角色
角色创建并授权后,要赋给用户并处于激活状态才能发挥作用。给用户添加角色可以使用GRANT语句,语法如下:
GRANT role [,role2,...] TO user [,user2,...];
上述语句中,role代表角色,user代表用户。可以将多个角色同时赋予多个用户,用逗号隔开。
举例一
给yuanyuanlanlan添加角色manager权限。
GRANT 'manager' TO 'yuanyuanlanlan'@‘localhost’;
角色赋予后使用SHOW语句查看是否成功:
SHOW GRANTS FOR 'yuanyuanlanlan'@‘localhost’;
使用账号yuanyuanlanlan登录后,查看当前角色,如果角色未激活,会显示NONE。
SELECT CURRENT_ROLE();
| CURRENT_ROLE() |
|---|
| NONE |
这时需要激活角色。
激活角色
方式一
使用set default role语句激活角色。
SET DEFAULT ROLE ALL TO 'yuanyuanlanlan'@‘localhost’;
方式二
将activate_all_roles_on_login设置为ON:
SET GLOBAL activate_all_roles_on_login=ON;
运行以上语句,表示对所有角色永久激活。此时,用户才真正拥有赋予角色的所有权限。
撤销用户的角色
撤销用户的角色语法如下:
REVOKE role FROM user;
举例二
撤销用户yuanyuanlanlan的角色manager:
REVOKE 'manager' FROM 'yuanyuanlanlan'@‘localhost’;
撤销后,查看是否成功的撤销了角色:
SHOW GRANTS FOR 'yuanyuanlanlan'@‘localhost’;
执行以上语句后,发现用户yuanyuanlanlan的manager角色已被撤销。
设置强制角色
方式一
服务启动前设置
[mysqld]
mandatory_roles='yuanyuanlanlan@localhost';
方式二
运行时设置
#系统重启后任然有效
SET PERSIST mandatory_roles='yuanyuanlanlan@localhost';
#系统重启后失效
SET GLOBAL mandatory_roles='yuanyuanlanlan@localhost';
今天就把用户权限角色管理全部学完了,明天继续学习其他MySQL底层的知识。