MySQL 应以专用低权限用户(如 mysql)运行,数据目录需设为 mysql:mysql 且权限 750,配置文件权限 644、日志目录 750,避免权限过宽导致启动失败或安全风险。

MySQL 运行权限主要指 MySQL 服务进程(mysqld)启动时所使用的操作系统用户身份,以及该用户对数据目录、配置文件、日志文件等关键路径的访问权限。配置不当会导致服务无法启动、数据损坏或安全风险。
MySQL 服务应使用专用低权限用户运行
MySQL 不应以 root 用户运行。推荐创建独立系统用户(如 mysql),仅赋予其操作数据库必需的最小权限。
- 检查当前运行用户:
ps -ef | grep mysqld,确认主进程 UID 是否为mysql - 若使用 systemd 启动,查看
/usr/lib/systemd/system/mysqld.service或/etc/systemd/system/mysqld.service中的User=和Group=设置(通常为User=mysql) - 安装时多数发行版(如 CentOS/RHEL 的 MySQL 官方包、Ubuntu 的
mysql-server)已自动创建mysql用户并配置好,无需手动干预
数据目录权限必须严格限制
MySQL 数据目录(默认如 /var/lib/mysql)必须仅允许 mysql 用户读写,禁止其他用户访问。
- 正确权限设置:
chown -R mysql:mysql /var/lib/mysql,然后chmod -R 750 /var/lib/mysql - 特别注意子目录(如数据库名目录)和文件(如
ibdata1、ib_logfile*、表文件)也需继承相同属主和合理权限 - 避免执行
chmod 777或开放 group/o 写权限,否则可能触发 MySQL 启动保护机制而拒绝启动
配置文件与日志路径需可被 mysql 用户访问
MySQL 需要读取配置文件(如 /etc/my.cnf 或 /etc/mysql/my.cnf),并写入错误日志、慢查询日志等。这些路径的权限也要匹配。
- 配置文件建议权限:
644,属主可为root(因含敏感配置),但确保mysql用户有读权限 - 日志目录(如
/var/log/mysql/)应属主mysql:mysql,权限750;日志文件本身通常为640 - 若自定义了
pid-file、socket路径,对应目录也需确保mysql用户可创建和写入
常见权限问题排查方法
服务启动失败时,优先检查权限相关错误线索:
- 查看错误日志(路径由
log-error配置项指定,常见于/var/log/mysqld.log或/var/log/mysql/error.log) - 典型报错包括:
Can't start server: Bind on TCP/IP port: Address already in use(端口冲突)、Can't create/write to file、Incorrect file format、Permission denied等 - 临时验证:切换到
mysql用户后手动尝试访问关键路径,例如:sudo -u mysql ls -l /var/lib/mysql










