my.cnf是MySQL启动时加载的配置文件,一般会放在MySQL的安装目录中,用户也可以放在其他目录中进行加载。安装完MySQL之后,Linux系统中会有多个my.cnf文件,它们中有些是用于测试的。使用locate my.cnf命令可以列出所有的my.cnf文件,如下图所示。

cnf不生效 mysql mysql的my.cnf文件在哪里_MySQL


当我们需要修改配置文件时,需要找到MySQL启动时到底是加载了哪个my.cnf文件。

查看是否使用了指定目录下的my.cnf文件

启动MySQL后,我们查看下MySQL的进程,看看是否有设置使用指定目录下的my.cnf文件,若有则表示MySQL启动时是加载了这个配置文件。

cnf不生效 mysql mysql的my.cnf文件在哪里_MySQL_02


若使用ps aux | grep mysql | grep 'my.cnf'命令之后没有任何输出,则表示没有设置使用指定目录下的my.cnf文件。

查看MySQL默认读取my.cnf文件的目录

如果没有设置使用指定目录下的my.cnf文件,那么MySQL启动时便会读取安装目录根目录及默认目录下的my.cnf文件。

使用mysql --help | grep 'my.cnf'命令即可查看MySQL启动时读取配置文件的默认目录。

cnf不生效 mysql mysql的my.cnf文件在哪里_配置文件_03


从上图中可以清楚地看到,/etc/my.cnf、/etc/mysql/my.cnf、/usr/etc/my.cnf以及~/.my.cnf这些文件就是MySQL启动时默认会依次读取的配置文件,并且顺序排前的优先。

启动时没有使用配置文件

若没有设置使用指定目录下的my.cnf文件及默认读取目录下没有my.cnf文件,则表示mysql启动时并没有加载配置文件,而是使用的默认配置。

如果我们想要修改配置,那么该怎么办呢?可以在MySQL默认读取的目录中创建一个my.cnf文件(例如/etc/my.cnf),然后把需要修改的配置内容写入,重启MySQL后即可生效。

比如说我本人在/etc目录下新建了一个my.cnf文件,并且其内容如下图所示。

cnf不生效 mysql mysql的my.cnf文件在哪里_MySQL_04


然后重启MySQL,使用的命令是service mysql status,重启成功后你便会看到如下图所示的效果。

cnf不生效 mysql mysql的my.cnf文件在哪里_配置文件_05