广告位联系
返回顶部
分享到

MySQL文件权限存在的安全问题和解决方案

Mysql 来源:互联网 作者:佚名 发布时间:2024-07-31 21:29:27 人浏览
摘要

在实际生产环境中,应按照软件安全设计的「最小特权原则」设置MySQL的文件权限。 MySQL「安装目录」的属主和属组需要设置成mysql用户; MySQL的「历史操作文件」、「历史命令文件」、「数据

在实际生产环境中,应按照软件安全设计的「最小特权原则」设置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。

1

ll ~/.mysql_history ~/.bash_history


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计