背景

  • 经常在部署MySQL的时候没有root账号,只能用普通账号部署,需要修改mysql.server来方便启停。
  • 在某些安装的系统上,/etc/my.cnf会默认生成一个,导致MySQL启动的时候会去读/etc/my.cnf。
  • 服务器上部署多个MySQL的时候,可能会有my.cnf的冲突。

基于上面三个原因,结合网上的文章,大概总结了下。

修改方法

  • 版本

应该适用MySQL目前的所有版本,mysql.server实质是一个shell。

  • 修改内容

路径: support-files/mysql.server

# 1、修改basedir和datadir路径
# 将两个路径改成实际的路径
basedir=
datadir=

# 2、修改extra_args,改成--defaults-file=$basedir/my.cnf
if test -r "$basedir/my.cnf"
then
#  extra_args="-e $basedir/my.cnf"
   extra_args="--defaults-file=$basedir/my.cnf"
fi

# 3、修改mysqld_safe启动默认配置文件,加入--defaults-file="$basedir/my.cnf"
# $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
$bindir/mysqld_safe --defaults-file="$basedir/my.cnf" --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null & 

启动|停止|重启

在mysql的配置文件等无误后,进去MySQL的目录执行下面的命令进行启动|停止|重启

  • 启动

support-files/mysql.server start

  • 停止

support-files/mysql.server stop

  • 重启

support-files/mysql.server restart

参考

从启动脚本分析mysql读取my.cnf配置的顺序: https://www.jianshu.com/p/bee4a55dc574