当前位置: 首页 > news >正文

MySQL 安全机制全面解析

在如今的数字化时代,数据库安全 变得越来越重要。为了防止对数据库进行非法操作,MySQL 定义了一套完整的安全机制,包括用户管理权限管理角色管理。本文将为你深入浅出地介绍这三大安全机制,帮助你轻松掌握MySQL的安全管理。

7.3.1 用户管理:从创建到删除,全面掌握用户管理

用户管理 是MySQL安全机制的基础,涉及到用户的创建、修改、删除等操作。每个MySQL用户账号由用户名主机名 组成,表示形式为 USER@HOST,如 root@localhost

1. 查询用户

在MySQL中,所有用户账号及相关信息都存储在 mysql 数据库的 user 表中。你可以使用以下命令查看所有用户:

SELECT user, host FROM mysql.user;

示例结果:

image

主机名(Host) 可以为以下三种形式:

  • localhost:表示用户只能在MySQL服务器所在的机器上登录。
  • % :表示用户可以在MySQL服务器以外的其他机器上登录(默认选项)。
  • 指定IP或网段:表示用户只能在指定机器或网段内的机器上登录。

2. 创建用户

使用 CREATE USER 语句可以创建新用户。示例: 创建用户 usera,主机名为 localhost,密码为 a123

CREATE USER 'usera'@'localhost' IDENTIFIED BY 'a123';

image

3. 修改用户名

使用 RENAME USER 语句可以修改已有用户的用户名。示例:usera 改为 userb

RENAME USER 'usera'@'localhost' TO 'userb'@'localhost';

image

4. 修改用户密码

在MySQL 8.0及以上版本中,使用 ALTER USER 语句修改用户密码。示例:userb 的密码修改为 b123

ALTER USER 'userb'@'localhost' IDENTIFIED WITH mysql_native_password BY 'b123';

5. 删除用户

使用 DROP USER 语句删除不再需要的用户。示例: 删除用户 userb

DROP USER IF EXISTS 'userb'@'localhost';

7.3.2 权限管理:精细化控制用户操作权限

权限管理 通过为用户分配权限来控制他们对数据库的操作能力。MySQL的权限分为管理权限数据库权限表权限列权限

常见权限类型

  • 管理权限:作用于所有数据库,如创建用户、关闭数据库等。
  • 数据库权限:作用于指定数据库中的所有对象,如创建和删除表的权限。
  • 表权限:作用于指定表,如对表进行增、删、改、查的权限。
  • 列权限:作用于指定表的指定列,如更新某一列的权限。

示例: 授予 usera 在所有数据库中创建表的权限:

GRANT CREATE ON *.* TO 'usera'@'localhost';

image

授予权限

使用 GRANT 语句授予用户权限。示例: 授予 useraTeach 数据库中查询 Student 表的权限,并允许将此权限转授给他人:

GRANT SELECT ON Teach.Student TO 'usera'@'localhost' WITH GRANT OPTION;

image

回收权限

使用 REVOKE 语句回收用户的权限。示例: 回收 usera 查询 Teach 数据库中 Student 表的权限:

REVOKE SELECT ON Teach.Student FROM 'usera'@'localhost';

image

注意: MySQL中的权限不能级联回收,即用户A将权限授予用户B,用户B又将此权限授予用户C。当用户A回收B的权限时,用户C的权限不会自动被回收。

7.3.3 角色管理:简化权限管理的利器

角色管理 是MySQL中简化权限管理的工具。角色是一组与数据库操作相关的权限,当将角色授予用户时,相当于为用户授予了多个权限,极大地简化了权限管理。

1. 创建角色

使用 CREATE ROLE 语句创建新角色。示例: 创建两个角色 rstudentrteacher

CREATE ROLE 'rstudent', 'rteacher';

2. 为角色授权

使用 GRANT 语句为角色授权。示例: 授予 rstudent 查询 Teach 数据库中所有表的权限,授予 rteacher 查询并更新 Teach 数据库中所有表的权限:

GRANT SELECT ON Teach.* TO 'rstudent';
GRANT SELECT, UPDATE ON Teach.* TO 'rteacher';

3. 将角色授予用户

使用 GRANT 语句将角色授予用户。示例:rstudent 授予 usera,将 rteacher 授予 userb

GRANT 'rstudent' TO 'usera'@'localhost';
GRANT 'rteacher' TO 'userb'@'localhost';

4. 设置默认角色

使用 SET DEFAULT ROLE 语句设置用户的默认角色。示例: 设置 rstudentusera 的默认角色:

SET DEFAULT ROLE 'rstudent' TO 'usera'@'localhost';

5. 启用和禁用角色

使用 SET ROLE 语句启用或禁用角色。示例: 启用 userarstudent 角色:

SET ROLE 'rstudent';

6. 回收角色权限

使用 REVOKE 语句回收角色的权限。示例: 回收 rstudent 查询 Teach 数据库中所有表的权限:

REVOKE SELECT ON Teach.* FROM 'rstudent';

7. 撤销角色

使用 REVOKE 语句撤销用户的角色。示例: 撤销 userarstudent 角色:

REVOKE 'rstudent' FROM 'usera'@'localhost';

8. 删除角色

使用 DROP ROLE 语句删除不再需要的角色。示例: 删除 rstudentrteacher 角色:

DROP ROLE 'rstudent', 'rteacher';

总结:全面掌握MySQL安全机制

通过本文的讲解,你应该对MySQL的安全机制 有了更深入的理解。用户管理权限管理角色管理 共同构成了MySQL的安全防线,帮助你有效地管理和保护数据库。

http://www.lryc.cn/news/437378.html

相关文章:

  • vue原理分析(十四)研究new Vue()中的 initProvide
  • Qt控制开发板的LED
  • S3C2440开发板点亮LED灯+PWM定时器
  • S-Procedure的基本形式及使用
  • free -h 查看内存free空间不足
  • rust学习笔记
  • 【有啥问啥】复习变分下界即证据下界(Evidence Lower Bound, ELBO):原理与应用
  • Linux shell编程学习笔记78:cpio命令——文件和目录归档工具(上)
  • 为什么在 JSON 序列化中不使用 transient
  • K8S - Volume - NFS 卷的简介和使用
  • IO模型---BIO、NIO、IO多路复用、AIO详解
  • 蓝桥杯真题——约翰的牛奶
  • 单机docker-compose部署minio
  • Winform实现弹出定时框功能
  • 【机器学习(四)】分类和回归任务-梯度提升决策树(GBDT)-Sentosa_DSML社区版
  • Mini-Omni 语言模型在流式传输中边思考边听说应用
  • vue devtools的使用
  • 无人机培训:无人机维护保养技术详解
  • Mac 创建 Python 虚拟环境
  • 安卓玩机工具-----无需root权限 卸载 禁用 删除当前机型app应用 ADB玩机工具
  • 中国科技统计年鉴1991-2020年
  • OpenAI / GPT-4o:Python 返回结构化 / JSON 输出
  • 通信工程学习:什么是EDFA掺铒光纤放大器
  • 机器学习与深度学习的区别
  • 标准库标头 <barrier>(C++20)学习
  • 如何测量一个(传输网络)系统的容量
  • 【MySQL】MySQL和Workbench版本兼容问题
  • 项目实战 ---- 商用落地视频搜索系统(10)---后台搜索Cache优化
  • 客户端(服务器下载文件)
  • P1544 三倍经验 (记忆化搜索)