MySQL角色管理:权限控制全攻略

1、角色的理解

为了方便管理拥有相同权限的用户引入了角色这一概念,恰当的权限设定,可以确保数据的安全性,这是比较重要的。

2、创建角色

创建角色使用 CREATE ROLL 语句,语法如下:

sql 复制代码
CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]...

3、给角色赋予权限

创建角色以后,默认该角色没有任何权限,我们需要给角色授权,语法是:

sql 复制代码
GRANT privileges ON table_name TO 'role_name'[@'host_name'];

4、查看角色的权限

授予角色权限之后,可以通过SHOW GRANTS语句,查看权限是否创建成功:

sql 复制代码
SHOW GRANTS FOR 'manager';

每创建一个角色系统就会自动给一个"USAGE "权限,意味着连接登录数据库的权限。

5、回收角色的权限

撤销角色权限语法如下:

sql 复制代码
REVOKE privileges ON tablename FROM 'rolename';

6、删除角色

删除角色的语法结构:

sql 复制代码
DROP ROLE role [,role2]...

如果执行了删除角色操作,用户就失去了通过这个角色所获得的所有权限。

7、给用户赋予角色

给用户添加角色使用GRANT语句,语法形式如下:

sql 复制代码
GRANT role [,role2,...] TO user [,user2,...];

注意 :角色建立并且授权后,要赋给用户并且处于激活状态才能使用。

8、激活角色

(1)使用 set default role 命令激活角色

sql 复制代码
SET DEFAULT ROLL '角色' TO '用户';

(2)将 activate_all_roles_on_login 设置为ON

默认情况下activate_all_roles_on_login处于OFF状态:

设置其为ON:

sql 复制代码
SET GLOBAL activate_all_roles_on_login=ON;

这样,对所有的角色永久激活。用户才真正拥有了赋予角色的所有权限。

查看当前会话已经激活的角色:

sql 复制代码
SELECT CURRENT_ROLE();

9、撤销用户的角色

撤销用户的角色语法如下:

sql 复制代码
REVOKE role FROM user;

10、设置强制角色

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

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
小白男神4 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶4 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G4 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
自由能燃气设备4 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能