MySQL 服务启动需要读取配置文件,如果存在多个 my.cnf 配置文件时,加载顺序
-
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 其他自定义路径下的my.cnf,例如:/data/mysql/yejr_3306/my.cnf
不管是mysqld服务器端程序,还是mysql客户端程序,都可以采用下面两个参数来自行指定要读取的配置文件路径:
-defaults-file=#, 只读取指定的文件(不再读取其他配置文件)
-defaults-extra-file=#, 从其他优先级更高的配置文件中读取全局配置后,再读取指定的配置文件(有些选项可以覆盖掉全局配置从的设定值)
Mysql关于my.cnf参数文件的读取顺序及各项配置的覆盖优先级
1、没有/etc/my.cnf、/etc/mysql/my.cnf、/usr/etc/my.cnf、 ~/.my.cnf文件,且/usr/bin/mysqld_safe和/usr/sbin/mysqld都没有指定–defaults-file的情况下,也就是没有任何配置文件的情况下所有的配置都是默认值
2、my.cnf会覆盖mysql.server里的basedir和datadir配置
3、mysqld和mysqld_safe指定–defaults-file的话,那么mysql的配置文件就是–defaults-file对应的文件,而不是默认的/etc/my.cnf文件
4、mysqld或mysqld_safe指定参数比如–datadir参数则会覆盖/etc/my.cnf的配置
5、mysql.server把默认的/etc/my.cnf中的参数传递给mysqld_safe,mysqld_safe再传递给mysqld
6、mysql --help | grep ‘Default options’ -A 1 查看my.cnf配置文件的读取顺序