MySQL学习-角色管理(二)

146 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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底层的知识。