插件窝 干货文章 linux mysql启动用什么权限

linux mysql启动用什么权限

MySQL 权限 用户 sudo 132    来源:    2025-05-01

在 Linux 系统中启动 MySQL(或 MariaDB)服务时,权限管理至关重要。以下是详细的权限说明和最佳实践:


1. MySQL 服务启动用户

  • 默认情况:MySQL 服务通常以 mysql 用户(或 mariadb 用户)运行,这是安装时自动创建的系统用户,权限受限。
    • 用户组通常为 mysql
    • 数据目录(如 /var/lib/mysql)的所有者为 mysql:mysql
  • 目的:通过专用低权限用户运行服务,遵循最小权限原则,提高安全性。

2. 启动 MySQL 所需的权限

(1) 通过 systemd 启动(推荐)

sudo systemctl start mysqld    # MySQL
sudo systemctl start mariadb   # MariaDB
  • 所需权限
    • 执行 systemctl 需要 root 权限(通过 sudo 提权)。
    • systemd 服务文件(如 /usr/lib/systemd/system/mysqld.service)中定义了 User=mysqlGroup=mysql,实际进程会降权到 mysql 用户运行。

(2) 直接调用 mysqld(不推荐)

mysqld --user=mysql --datadir=/var/lib/mysql
  • 所需权限
    • 启动命令需要 root 权限(或能切换到 mysql 用户的权限)。
    • --user=mysql 确保进程以 mysql 用户运行。
    • 数据目录(datadir)必须属于 mysql:mysql,权限通常为 750700

3. 关键文件和目录权限

  • 数据目录(默认 /var/lib/mysql): bash sudo chown -R mysql:mysql /var/lib/mysql sudo chmod 750 /var/lib/mysql # 推荐权限
  • 配置文件(如 /etc/my.cnf/etc/mysql/my.cnf): bash sudo chown root:root /etc/my.cnf sudo chmod 644 /etc/my.cnf # 允许全局读取,仅 root 可写
  • 日志文件(如 /var/log/mysql.log): bash sudo chown mysql:mysql /var/log/mysql.log sudo chmod 640 /var/log/mysql.log

4. 常见问题排查

错误示例

[ERROR] Could not create file '/var/lib/mysql/ibdata1'
  • 原因mysql 用户无权写入数据目录。
  • 解决bash sudo chown -R mysql:mysql /var/lib/mysql

错误示例

[ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
  • 原因:直接以 root 用户运行 mysqld 未指定 --user=mysql
  • 解决:始终通过 systemd--user=mysql 启动。

5. 安全建议

  1. 永远不要以 root 用户直接运行 MySQL 进程
  2. 使用 systemd 管理服务(自动处理用户降权)。
  3. 定期审计权限: bash sudo ls -l /var/lib/mysql /etc/my.cnf /var/log/mysql*

总结

  • 启动命令:使用 sudo systemctl start mysqld(需 root 权限)。
  • 运行时用户:实际进程以 mysql 用户运行。
  • 目录权限:确保数据目录、日志文件属于 mysql:mysql

通过合理配置权限,可确保 MySQL 服务安全稳定运行。