核心是操作系统权限与mysql配置协同,确保数据文件仅授权访问。首先确认MySQL服务以mysql用户运行,使用ps aux|grep mysqld查看;然后设置数据目录归属为mysql:mysql,执行chown -R mysql:mysql /var/lib/mysql;目录权限设为750,chmod -R 750 /var/lib/mysql;关键文件如ibdata1、.frm等设为640,通过find /var/lib/mysql -type f -exec chmod 640 {} ;实现;上级目录如/var/lib也应限制访问;配置文件my.cnf权限设为640,属主root:mysql,chown root:mysql /etc/my.cnf,chmod 640 /etc/my.cnf;日志文件同样设为640并归属mysql用户;在my.cnf中启用secure_file_priv=/tmp限制文件操作路径,明确innodb_data_home_dir和datadir路径;遵循最小权限原则,定期检查权限与归属是否被篡改。

在 MySQL 中配置数据文件权限的核心是确保数据库文件只能被授权用户和进程访问,防止未授权读写。重点在于操作系统层面的文件权限设置与 MySQL 服务运行账户的合理配置。
确认 MySQL 运行用户
MySQL 服务通常以特定系统用户运行(如 mysql),该用户需要对数据目录有完整访问权限。
查看当前 MySQL 进程运行用户:
ps aux | grep mysqld- 找到类似
mysql 1234 ... mysqld的行,确认用户名为 mysql 或其他指定用户
确保数据目录归属正确:
-
chown -R mysql:mysql /var/lib/mysql(路径根据实际调整) - 这保证 MySQL 用户拥有读写权限
设置数据目录权限
数据目录和文件不应开放给其他用户访问,避免信息泄露或篡改。
- 目录权限建议设为 750:
chmod -R 750 /var/lib/mysql - 关键文件如 ibdata1、.frm、.ibd 等应为 640:
find /var/lib/mysql -type f -exec chmod 640 {} ; - 确保上级目录(如 /var/lib)也限制访问,防止遍历
保护配置文件与日志文件
除了数据文件,配置文件(my.cnf)和日志文件(如 Error log、slow log)也需权限控制。
- 配置文件权限设为 640:
chmod 640 /etc/my.cnf - 属主改为 mysql 用户:
chown root:mysql /etc/my.cnf - 日志文件同样设置为 640 并归属 mysql 用户
启用安全加固选项
MySQL 自身配置也能增强文件安全。
- 在 my.cnf 中添加:
innodb_data_home_dir和datadir明确路径 - 使用
secure_file_priv限制 LOAD DATA 和 select … INTO OUTFILE 的路径 - 设置
secure_file_priv=/tmp可减少风险暴露
基本上就这些。关键是操作系统权限与 MySQL 配置协同,保持最小权限原则,定期检查文件归属和模式是否被意外更改。


