MySQL 安全机制全面解析

news2024/11/17 2:46:11

在如今的数字化时代,数据库安全 变得越来越重要。为了防止对数据库进行非法操作,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.coloradmin.cn/o/2133592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MPP数据库之SelectDB

SelectDB 是一个高性能、云原生的 MPP(大规模并行处理)数据库,旨在为分析型数据处理场景提供快速、弹性和高效的解决方案。它专为处理大规模结构化和半结构化数据设计,常用于企业级业务分析、实时分析和决策支持。 SelectDB 是在…

Vue2时间轴组件(TimeLine/分页、自动顺序播放、暂停、换肤功能、时间选择,鼠标快速滑动)

目录 1介绍背景 2实现原理 3组件介绍 4代码 5其他说明 1介绍背景 项目背景是 一天的时间轴 10分钟为一间隔 一天被划分成144个节点 一页面12个节点 代码介绍的很详细 可参考或者借鉴 2实现原理 对Element-plus滑块组件的二次封装 基于Vue2(2.6.14&#x…

数字孪生引领智慧医院革新:未来医疗的智能化之路

数字孪生(Digital Twin) 是指将物理实体或系统的数字化模型与其实时运行数据相结合,以反映实体的状态、行为和性能,并通过数据分析和仿真来优化决策和管理。在智慧医院建设中,数字孪生技术扮演着关键角色。 1. 数字孪生…

基于SpringBoot+Vue的瑜伽体验课预约管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

国内按月/季/年使用GPT4.0及OpenAI最新的模型

其实gpt官方版本不仅对于网络要求很高,且订阅用户对高级模型的使用也是有次数限制的, 国内想要稳定且最快同步官网的最新模型,我推荐一个地址,可以方便的不限次数的使用GPT4.0等模型, 今天早上刚出的OpenAI全新的草莓模型&#xf…

uniapp 发布苹果IOS详细流程,包括苹果开发者公司账号申请、IOS证书、.p12证书文件等

记录一下uniapp发布苹果IOS的流程。 一、苹果开发者公司账号申请 1、邓白氏编码申请(先申请公司邓白氏编码,这一步需要1-2周,没有这个编码苹果开发者没法申请,已有编码的跳过此步骤): 1)联系苹…

【C++ Primer Plus习题】16.1

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include <string> usin…

Linux通配符*、man 、cp、mv、echo、cat、more、less、head、tail、等指令、管道 | 、指令的本质 等的介绍

文章目录 前言一、Linux通配符*二、man 指令三、 cp 指令四、mv指令五、 echo 指令六、cat 指令七、more 指令八、 less 指令九、 head 指令十、 tail指令十一、 管道 |十二、指令的本质总结 前言 Linux通配符*、man 、cp、mv、echo、cat、more、less、head、tail、等指令、管…

[Unity Demo]重启项目之从零开始制作空洞骑士Hollow Knight第一集:导入素材以及建立并远程连接git仓库

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、导入素材二、使用步骤 1.建立并远程连接git2.github和仓库连接总结 前言 好久没来CSDN看看&#xff0c;突然看到前两年自己写的文章从零开始制作空洞骑士只…

【计算机网络 - 基础问题】每日 3 题(一)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

基于云计算的虚拟电厂负荷预测

基于云计算的虚拟电厂负荷预测 随着电网规模的扩大及新能源的不断应用&#xff0c;并网电网的安全性和经济性备受关注。 电网调度不再是单一或局部控制&#xff0c;而是采用智能网络集成方式调度 。 智能电网应具有以下特点&#xff1a;坚强自愈&#xff0c;可以抵御外来干扰甚…

使用 Milvus、vLLM 和 Llama 3.1 搭建 RAG 应用

vLLM 是一个简单易用的 LLM 推理服务库。加州大学伯克利分校于 2024 年 7 月将 vLLM 作为孵化项目正式捐赠给 LF AI & Data Foundation 基金会。欢迎 vLLM 加入 LF AI & Data 大家庭&#xff01;&#x1f389; 在主流的 AI 应用架构中&#xff0c;大语言模型&#xff0…

【devops】devops-git之介绍以及日常使用

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

【GBase 8c V5_3.0.0 分布式数据库常用几个SQL】

1.检查应用连接数 以管理员用户 gbase&#xff0c;登录数据库主节点。 接数据库&#xff0c;并执行如下 SQL 语句查看连接数。 SELECT count(*) FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s;2.查看空闲连接 查看空闲(state 字段为”idle”)且长时间没有更…

【linux-Day3】linux下的基本指令

【linux-Day3】linux下的基本指令 linux下的基本指令&#x1f4e2;man&#xff1a;访问linux手册页&#x1f4e2;echo&#xff1a;把字符串写入指定文件中&#x1f4e2;cat&#xff1a;查看目标文件的内容&#x1f4e2;cp&#xff1a;复制文件或目录&#x1f4e2;mv&#xff1a…

【【通信协议ARP的verilog实现】】

【【通信协议ARP的verilog实现】】 eth_arp_test.v module eth_arp_test(input sys_clk , //系统时钟input sys_rst_n , //系统复位信号&#xff0c;低电平有效input touch_key , //触摸按键,用于触发开发…

【JVM】判断对象能否回收的两种方法:引用计数算法,可达性分析算法

1、引用计数算法&#xff1a; 给对象添加一个引用计数器&#xff0c;当该对象被其它对象引用时计数加一&#xff0c;引用失效时计数减一&#xff0c;计数为0时&#xff0c;可以回收。 特点&#xff1a;占用了一些额外的内存空间来进行计数&#xff0c;原理简单&#xff0c;判…

wincc利用拓展屏实现多台显示器显示单个项目配置方法详解

以下视频为完整操作教程 wincc利用拓展屏实现多台显示器显示单个项目配置方法详解 一、硬件接线 首先要保证wincc项目主机电脑要具备两个显示器接口&#xff0c;不管是VGA还是HDMI的都可以&#xff0c;让后将两台显示器接到同一台电脑上。如下图&#xff1a; 二、windows设置 …

基于python+django+vue的社区爱心养老管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于pythondjangovueMySQL的社…

设计模式重新整理

系统整理 河北王校长的 贯穿设计模式 和 王争的设计模式之美&#xff0c;希望能形成肌肉记忆 文章目录 为什么需要掌握设计模式1. 六大原则介绍1. 单一职责原则2. 开闭原则3. 里式替换原则4. 依赖倒置原则5. 接口隔离原则6. 迪米特法则 分类 单例模式适配器模式封装有缺陷的接口…