mysql数据目录权限配置应该注意什么

来源:这里教程网 时间:2026-02-28 20:09:42 作者:

MySQL 数据目录的权限配置直接关系到数据库的安全性和稳定性,配置不当可能导致数据泄露、服务无法启动甚至被恶意篡改。以下是关键注意事项:

1. 目录归属必须正确

MySQL 数据目录(通常为 /var/lib/mysql)应归属于运行 mysqld 进程的系统用户,通常是 mysql 用户和 mysql 组。

确保所有文件和子目录都由 mysql 用户拥有: sudo chown -R mysql:mysql /var/lib/mysql 不要将目录归属设为 root 或其他普通用户,避免权限冲突或提权风险。

2. 权限设置要严格

数据目录及其内容不应对其他用户开放读写权限。

推荐设置目录权限为 750,文件为 640 sudo find /var/lib/mysql -type d -exec chmod 750 {} \;
sudo find /var/lib/mysql -type f -exec chmod 640 {} \; 禁止其他用户(others)有任何访问权限,防止非授权用户查看表结构或数据文件。 特别注意 ibdata1、ib_logfile*、.frm、.ibd 等核心文件的安全。

3. 避免使用 777 或宽松权限

开发或调试时有人临时设为 777,这是严重安全隐患。

攻击者可能通过其他服务漏洞读取或篡改 MySQL 数据文件。 SELinux 或 AppArmor 可能因权限过宽拒绝启动 mysqld。

4. 注意 SELinux 和 AppArmor 的影响

在 CentOS/RHEL 等系统上,SELinux 要求正确的安全上下文。

确保数据目录的 context 正确: sudo restorecon -R /var/lib/mysql 若自定义数据路径,需手动配置 SELinux 规则,否则 mysqld 无法访问。

5. 自定义数据目录的特殊处理

如果将 datadir 改为非默认路径(如 /data/mysql),需额外注意:

新路径所在分区应支持文件锁和大文件。 挂载选项建议包含 noatime,nobarrier(根据存储类型调整)。 确保 mysql 用户对该路径有完整控制权。 修改 apparmor 或 selinux 策略以允许访问新路径。

6. 定期检查权限一致性

系统更新或备份恢复后,权限可能被更改。

定期执行权限审计: ls -ld /var/lib/mysql
ls -l /var/lib/mysql | head -10 结合监控脚本检测异常权限变更。

基本上就这些。权限配置不复杂但容易忽略,保持最小权限原则是关键。

相关推荐