MySQL 配置文件 my.cnf 的读入顺序

首先查看当前运行 mysql 进程时有没有指定 my.cnf 文件:

ps aux | grep mysql | grep 'my.cnf'

如果上面的命令没有输出,表示启动 mysql 时没有指定 --defaults-file=/path/to/my.cnf

敲入以下命令,得知 my.cnf 的默认搜寻顺序:

mysql --help | grep 'Default options' -A 1

会显示如下信息:

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

我们依次到以上目录去找是否有对应的 my.cnf。

如果启动 mysql 既没有设置 --defaults-file,默认的读取目录也找不到 my.cnf 文件,那么表示 mysql 启动时没有任何加载配置文件,而是使用默认配置。

MacOS 里通过 homebrew 安装的 MySQL 5.7 缺省启动时就没有加载 my.cnf

敲入 locate my*.cnf 可列出所有 my.cnf 文件:

/usr/local/Cellar/mysql/5.7.14/support-files/my-default.cnf
/usr/local/Cellar/mysql/5.7.14/mysql-test/include/default_my.cnf
/usr/local/Cellar/mysql/5.7.14/mysql-test/suite/federated/my.cnf
/usr/local/Cellar/mysql/5.7.14/mysql-test/suite/ndb/my.cnf
.....

第一个 support-files/my-default.cnf 是我们要找的,把它复制到 /usr/local/etc/ 下。

cp /usr/local/opt/mysql/support-files/my-default.cnf /usr/local/etc/my.cnf

重启 mysql 后配置即可生效。

sudo launchctl unload -w /Library/LaunchDaemons/homebrew.mxcl.mysql.plist
或
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist