在 Linux 系统中启动 MySQL(或 MariaDB)服务时,权限管理至关重要。以下是详细的权限说明和最佳实践:
mysql 用户(或 mariadb 用户)运行,这是安装时自动创建的系统用户,权限受限。
mysql。/var/lib/mysql)的所有者为 mysql:mysql。sudo systemctl start mysqld # MySQL
sudo systemctl start mariadb # MariaDB
systemctl 需要 root 权限(通过 sudo 提权)。systemd 服务文件(如 /usr/lib/systemd/system/mysqld.service)中定义了 User=mysql 和 Group=mysql,实际进程会降权到 mysql 用户运行。mysqld --user=mysql --datadir=/var/lib/mysql
mysql 用户的权限)。--user=mysql 确保进程以 mysql 用户运行。datadir)必须属于 mysql:mysql,权限通常为 750 或 700。/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[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 启动。systemd 管理服务(自动处理用户降权)。bash
sudo ls -l /var/lib/mysql /etc/my.cnf /var/log/mysql*sudo systemctl start mysqld(需 root 权限)。mysql 用户运行。mysql:mysql。通过合理配置权限,可确保 MySQL 服务安全稳定运行。