数据库安全:MySQL文件权限的安全问题和解决方案

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。

在这里插入图片描述

这一章节我们需要知道 MySQL「文件权限」存在哪些安全问题,如何针对这些问题做安全加固。

在这里插入图片描述

MySQL文件权限

  • 1、数据库配置文件
  • 2、数据存储文件
  • 3、历史操作文件

在实际生产环境中,应按照软件安全设计的「最小特权原则」设置MySQL的文件权限。

  • MySQL「安装目录」的属主和属组需要设置成mysql用户;
  • MySQL的「历史操作文件」「历史命令文件」「数据物理存储文件」只给属主用户读写权限;
  • MySQL的「配置文件」只给属主用户读写权限,属组和其他用户给只读权限。

依次执行下列命令,检查权限是否符合要求:

  • ll ~/.mysql_history ~/.bash_history 权限600
  • ll /etc/my.cnf 权限644
  • find / -name *.ibd | xargs ls -al 权限600
  • find / -name *.MYD | xargs ls -al 权限600
  • find / -name *.MYI| xargs ls -al 权限600
  • find / -name *.frm| xargs ls -al 权限600

接下来给大家解释一下这些文件都是干嘛的。

1、数据库配置文件

/etc/my.cnf 是MySQL数据库「配置文件」,为了防止未授权篡改,应设置权限为 644。

ll /etc/my.cnf 检查配置文件权限:

在这里插入图片描述

/etc/my.cnf 默认有以下字段:

  • datadir:数据库目录
  • socket:MySQL客户端程序与服务端通信的套接字文件
  • log-error:日志位置
  • pid-file:存放MySQL进程id的文件

2、数据存储文件

MySQL每创建一个「表」,都会在数据库目录下创建一个「二进制文件」,用来存储表中的「数据」

下图中可以看到,除了information_schema 和 performance_schema ,每个数据库都对应一个目录,目录下存放这个数据库的表文件。

在这里插入图片描述

MySQL8.0以前,数据存储文件统一用 .frm 扩展名。

MySQL8.0以后,不同的数据库引擎,保存文件的扩展名不一样。

  • InnoDB:独享表空间用 .idb,一个表对应一个文件;共享表空间用 .ibdata,多个表公用一个文件。
  • MyISAM:表的数据用 .MYD;表的索引用 .MYI
  • Archive: .arc
  • CSV: .csv

查看支持的引擎 show engines;,default表示默认,正在使用的引擎。

在这里插入图片描述

为了防止未授权访问和篡改,数据存储文件的权限应配置为 600。

检查数据库文件的权限:

  • find / -name *.ibd | xargs ls -al
  • find / -name *.MYD | xargs ls -al
  • find / -name *.MYI| xargs ls -al
  • find / -name *.frm| xargs ls -al

3、历史操作文件

~/.mysql_history~/.bash_history 分别存储MySQL「历史操作命令」「系统历史命令」

为了防止未授权访问和篡改,应将文件权限配置为 600。

ll ~/.mysql_history ~/.bash_history

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3280363.html

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

相关文章

Java8新特性之Stream-Map

Map一些新方法的具体使用案例 1、getOrDefault:default V getOrDefault(Object key, V defaultValue) package com.qbb.threadpool;import java.util.HashMap; import java.util.Map;/*** author QiuQiu&LL (个人博客:https://www.cnblogs.com/qbbit)* version 1.0* date…

从功能出发:优化超市商品陈列,助力销售额提升

随着时代的发展,竞争的加剧,人们的生活节奏加快,时间观念越来越强。在这种情形下,作为超市,怎样为顾客提供一个舒适方便的购物环境,尽可能让顾客逛完整个卖场,满足一站式购足呢?除了…

外卖项目day10---缓存商品/Spring Cache初学、购物车功能

缓存菜品,只需要在DishController中修改一下代码即可 /*** 菜品管理*/ RestController RequestMapping("/admin/dish") Api(tags "菜品相关接口") Slf4j public class DishController {Autowiredprivate DishService dishService;Autowiredpri…

【前端面试】七、算法-递归

遍历方法总结 链式调用 数组的很多操作可以构成链式操作,类似这样的格式:…map().filter(…).sort(…).map(….)链式操作就是对象方法返回类型是自身的。比如map是属于数组的方法,它返回数组,所以构成了链式操作优势:…

The Llama 3 Herd of Models 第4部分后训练的全文

Llama 3前三部分包括介绍、总体概述和预训练https://blog.csdn.net/qq_51570094/article/details/140682445?spm=1001.2014.3001.5501 4 Post-Training 后训练 我们通过应用几轮后训练6或将模型与人类反馈对齐来生成对齐的Llama 3模型(Ouyang等人,2022;Rafailov等人,2024)在…

Null Pointer Exception: 如何快速定位和修复?️

Null Pointer Exception: 如何快速定位和修复?💡🛠️ Null Pointer Exception: 如何快速定位和修复?💡🛠️摘要引言正文内容什么是Null Pointer Exception?🤔NPE的常见原因&#x1f…

使子查询可行

使用 子查询 时,行为或要求可能不会保存为普通查询。 此查询有效: 但是,作为子查询,它不再起作用: 原因是子查询需要别名:当我们添加它时,原来的错误消失了,但又出现了新的错误&…

springboot集成thymeleaf实战

引言 笔者最近接到一个打印标签的需求,由于之前没有做过类似的功能,所以这也是一次学习探索的机会了,打印的效果图如下: 这个最终的打印是放在58mm*58mm的小标签纸上,条形码就是下面的35165165qweqweqe序列号生成的&…

FPGA知识基础之--按键控制LED灯项目

文章目录 前言一、按键简介按键:通过按下或者释放来控制电路通断的电子元件按键原理图 二、实验要求三、程序设计3.1思路整理3.2 模型搭建3.3 顶层模块3.4 波形分析 四、代码整理4.1RTL代码4.2 仿真只需在Testbench上增加上述一段代码即可将参数实例化,可达到在Testbench上更改…

卷积神经网络的入门基本介绍 | 带你快速上手各种概念【附图解】

文章目录 1、简介2、核心概念3、关键操作4、常见架构5、训练过程6、重要概念图解⭐6.1、卷积神经网络工作⭐6.2、卷积核6.3、全连接与卷积网络的对比6.4、池化层6.5、感受野和卷积堆叠6.6、神经元计算和激活函数 7、卷积网络可以改进的地方8、结论 🍃作者介绍&#…

vue3集成LuckySheet实现导入本地Excel进行在线编辑

第一步:克隆或者下载下面的代码 git clone https://github.com/dream-num/Luckysheet.git第二步:安装依赖 npm install npm install gulp -g 第三步:运行 npm run dev效果如下图所示 第四步:打包 打包执行成功后,…

TypeError: Components is not a function

Vue中按需引入Element-plus时,报错TypeError: Components is not a function。 1、参考Element-plus官方文档 安装unplugin-vue-components 和 unplugin-auto-import这两款插件 2、然后需要在vue.config.js中配置webPack打包plugin配置 3、重新启动项目会报错 T…

程序员开发指南

在这个快节奏的时代,作为一名程序员,大家都希望能更快地开发出高质量的应用,而不是花费大量时间在基础设施和后台服务的搭建上。今天,我要向大家介绍一款专为懒人开发者准备的一站式开发应用的神器——MemFire Cloud。 一站式开发…

制品库nexus

详见:Sonatype Nexus Repository搭建与使用(详细教程3.70.1)-CSDN博客 注意事项: 1.java8环境使用nexus-3.69.0-02-java8-unix.tar.gz包 2.java11环境使用nexus-3.70.1-02-java11-unix.tar.gz包 3.注意使用制品库/etc/yum.repos.…

动物大联盟游戏攻略:必备游戏攻略!VMOS云手机升级攻略教程!

在《动物大联盟》中,合理的称号选择、活动参与和组队合作可以极大提升游戏体验和效率。以下是详细的攻略建议: 称号选择 称号不仅能展示玩家的实力和成就,还能提供额外的属性加成。合理选择和更换称号是提升战力的重要途径。 前期称号选择&…

Matlab编程资源库(19)级数与符号方程求解

一、级数符号求和 求无穷级数的和需要 符号表达式求和函数 symsum ,其调用 格式为: symsum(s,v,n,m) 其中 s 表示一个级数的通项,是一个符号表达式。 v 是求和变 量, v 省略时使用系统的默认变量。 n 和 m 是求和的开始项 和…

【康复学习--LeetCode每日一题】3111. 覆盖所有点的最少矩形数目

题目&#xff1a; 给你一个二维整数数组 point &#xff0c;其中 points[i] [xi, yi] 表示二维平面内的一个点。同时给你一个整数 w 。你需要用矩形 覆盖所有 点。 每个矩形的左下角在某个点 (x1, 0) 处&#xff0c;且右上角在某个点 (x2, y2) 处&#xff0c;其中 x1 < x…

职业教育计算机网络综合实验实训室建设应用案例

近年来&#xff0c;职业教育在培养技能型人才方面发挥着越来越重要的作用。然而&#xff0c;传统的计算机网络技术教学模式往往重理论、轻实践&#xff0c;导致学生缺乏实际操作能力和职业竞争力。为了改变这一现状&#xff0c;唯众结合职业教育特点&#xff0c;提出了“教、学…

04.FreeRTOS任务创建

04. FreeRTOS任务创建与任务删除 1. FreeRTOS创建和删除任务相关API函数 函数描述xTaskCreate()动态方式创建任务xTaskCreateStatic()静态方式创建任务xTaskCreateRestricted()动态方式创建使用 MPU 限制的任务xTaskCreateRestrictedStatic()静态方式创建使用 MPU 限制的任务…