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

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版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 数据目录应属
mysql:mysql,权限设为750:sudo chmod 750 /var/lib/mysql - 配置文件应属
root:mysql,权限设为640:sudo 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=OFF和performance_schema=OFF(若无需性能诊断) - 验证是否生效:
mysql -e "SHOW VARIABLES LIKE 'symbolic_links';"应返回OFF - 注意:禁用
performance_schema后,sysschema 将不可用,依赖它的监控脚本需提前适配










