怎样在Linux环境下加固MySQL服务器的操作系统级安全?

P粉602998670

P粉602998670

2026-07-18

354人浏览

原创

mysql安全加固需四步:一是禁用mysql账号登录,设shell为/usr/sbin/nologin;二是严格限制数据目录(750)、配置文件(640)及ssl证书(600)权限;三是禁用mysql_config_editor明文存密,改用环境变量或socket认证;四是关闭symbolic-links与performance_schema。

怎样在linux环境下加固mysql服务器的操作系统级安全?

MySQL进程运行账号不能登录系统

MySQL服务进程默认由 mysql 用户运行,但这个用户如果被配置成可登录的 shell 账号(比如 /bin/bash),攻击者一旦突破 MySQL 服务层,就可能直接获得一个操作系统 shell。这是非常危险的。

检查当前配置:
getent passwd mysql —— 如果返回中第 7 字段不是 /usr/sbin/nologin/bin/false,说明该账号可登录。

  • 立即禁用登录:执行 sudo usermod -s /usr/sbin/nologin mysql
  • 确认无历史登录记录:sudo last -a | grep mysql,若发现异常登录痕迹需进一步排查
  • 避免后续误操作:安装或重装 MySQL 时,包管理器通常会自动设为 nologin,但手动编译部署常遗漏此步

MySQL数据目录和配置文件权限必须严格限制

MySQL 的数据目录(如 /var/lib/mysql)、日志路径、SSL 证书路径以及主配置文件(如 /etc/mysql/my.cnf)若权限过宽,会导致敏感信息泄露或被篡改。

典型错误现象:mysqld 启动失败并报错 Warning: World-writable config file '/etc/mysql/my.cnf' is ignored,或审计工具提示 “Insecure file permissions”。

PyCharm 2026.2.0.1 Linux版
PyCharm 2026.2.0.1 Linux版

PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。

下载
  • 数据目录应属 mysql:mysql,权限设为 750sudo chmod 750 /var/lib/mysql
  • 配置文件应属 root:mysql,权限设为 640sudo chmod 640 /etc/mysql/my.cnf
  • SSL 证书和密钥文件(如 /etc/mysql/ssl/mysql-key.pem)必须是 600,且仅 mysql 用户可读:sudo chown mysql:mysql /etc/mysql/ssl/*.pem && sudo chmod 600 /etc/mysql/ssl/*.pem

禁止使用 mysql_config_editor 存储明文密码

mysql_config_editor 生成的 ~/.mylogin.cnf 文件虽经简单 obfuscation,但本质上仍是明文可逆编码,任何能读取该文件的用户(包括同服务器其他账号)都能还原出密码。

常见使用场景:运维脚本中用 mysql --login-path=backup 自动连接,看似方便,实则埋下高危隐患。

  • 删除已有凭据:mysql_config_editor remove --login-path=backup
  • 改用更安全方式:在脚本中通过环境变量传参(MYSQL_PWD),并确保脚本权限为 600;或使用 socket 认证(auth_socket 插件)替代密码
  • 检查是否残留:ls -l ~/.mylogin.cnf,若存在且未清理,mysql 进程启动时可能意外加载它

禁用 MySQL 调试与符号链接功能

某些发行版或自编译 MySQL 默认启用 --symbolic-links 或调试相关选项(如 performance_schema 全开),这些在生产环境中不仅无用,还扩大了攻击面。

例如,开启 symbolic-links 允许 MySQL 通过 CREATE TABLE ... DATA DIRECTORY 指向任意路径,可能绕过数据目录权限控制;而过度暴露 performance_schema 则可能泄露内存布局或内部状态。

  • [mysqld] 段添加:symbolic-links=OFFperformance_schema=OFF(若无需性能诊断)
  • 验证是否生效:mysql -e "SHOW VARIABLES LIKE 'symbolic_links';" 应返回 OFF
  • 注意:禁用 performance_schema 后,sys schema 将不可用,依赖它的监控脚本需提前适配
关键点在于:操作系统级加固不是“配完就完”,而是要持续验证 MySQL 进程实际以什么身份运行、哪些文件对谁可读、哪些功能真被关掉——很多漏洞恰恰出现在“以为关了,其实没生效”的缝隙里。

相关专题

更多
视频服务器配置参数有哪些
视频服务器配置参数有哪些

视频服务器配置参数有处理器、内存、存储、视频编解码器、网络接口、视频输入输出接口、操作系统、安全性、环境适应性和成本。在搭建视频服务器时,需要根据实际需求和预算,合理选择这些参数,以实现高性能、高稳定性和低成本的目标。

2023.10.17

1891

11

linux的操作系统介绍
linux的操作系统介绍

Linux是一个灵活、稳定、安全的操作系统,适用于各种不同的应用场景,从个人电脑到服务器和嵌入式系统。想了解更多Linux的相关内容,可以阅读本专题下面的文章。

2024.03.20

1703

12

Linux操作系统的主要用途
Linux操作系统的主要用途

Linux操作系统用途广泛,包括:服务器运营,软件开发,科学研究和教育,嵌入式系统,以及个人电脑和笔记本电脑。想了解更多Linux的相关内容,可以阅读本专题下面的文章。

2024.03.21

2326

8

linux操作系统的作用
linux操作系统的作用

linux操作系统在以下领域发挥着关键作用:服务器和云计算;嵌入式系统;个人电脑和笔记本电脑;超级计算;其他领域等等。想了解更多linux操作系统的相关内容,可以阅读本专题下面的文章。

2024.04.12

1140

5

有哪些常见的网络操作系统
有哪些常见的网络操作系统

常见的网络操作系统有windows server、linux、unix、macos server、freebsd、cisco ios、juniper junos和hp-ux等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.12

1614

6

32位操作系统怎么改成62位的
32位操作系统怎么改成62位的

要将 32 位操作系统升级到 64 位,需要遵循以下步骤:1. 检查硬件和软件兼容性;2. 备份数据;3. 获取 64 位操作系统;4. 创建可启动安装媒体;5. 从安装媒体启动计算机;6. 选择“升级”选项;7. 完成安装。

2025.04.02

2393

9

服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

355

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

617

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

1216

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 124人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 224人学习

phpEnv手册
phpEnv手册

共0课时 | 0人学习